记录一下。。
【情况】
用若依代码生成器所生成的代码,试图更新user_Id,但是报操作失败,却找不到任何错。其他功能都正常,甚至改除了user_Id字段之外的字段都是可以的。
直到 ——

【后端日志】

21:28:38.193 [http-nio-8080-exec-65] DEBUG c.r.u.m.U.updateUserInfo - [debug,137] - ==>  
Preparing: 
update user_info SET community_id = ?, sex = ?, create_by = ?, create_time = ?, update_by = ?, update_time = ? where user_id = ?

21:28:38.202 [http-nio-8080-exec-65] DEBUG c.r.u.m.U.updateUserInfo - [debug,137] - ==> 
Parameters: 
2(String), 0(Long), (String), 2023-04-07 21:02:42.0(Timestamp), (String), 2023-04-07 21:28:38.193(Timestamp), 2233peaing(String)

21:28:38.202 [http-nio-8080-exec-65] DEBUG c.r.u.m.U.updateUserInfo - [debug,137] - <== 
Updates: 0

【含义】
日志为SQL 语句的准备语句,
将 user_info 表中 user_id 为 2233peaing 的用户的 community_id 字段设置为 2,sex 字段设置为……
最后一行 “<== Updates: 0” 表示执行的更新数量为 0。

知道日志表达的含义就知道了。问题就是我的 user_info 表的主键就是user_id,而user_id是字符串,正如日志所示,“将 user_info 表中 user_id 为 2233peaing 的用户”,大概若依是根据主键去更新和插入记录的。
具体还不知道若依是因为主键是字符串还是因为根据主键去更改主键才报错,理论上应该是后者。但是没时间试了,反正通过把user_id的主键取消,转而给数据库加了个id的int类型自增字段作为主键,确实可以新增和更新了

【后更】
之前写的好垃圾,不是上面的问题。
首先不止若依,一般都是根据主键去更新和修改。
其次一看这sql肯定没问题,应该是数据库类型和传递类型对不上或者根本没有id为这一串字符串的记录,所以改成id自增才能解决。

Logo

快速构建 Web 应用程序

更多推荐