SpringBoot 填坑 | CentOS7.4 环境,MySQL5.7 表时间字段默认值设置失效

这就是坑,JPA的@CreatedDate和@LastModifiedDate注解需与@EntityListeners配合使用,否则不会自动填充时间字段。

在解决时间字段自动填充问题时,学生最终通过添加@CreatedDate和@LastModifiedDate注解以及@EntityListeners(AuditingEntityListener.class)和@EnableJpaAuditing注解来修复问题。

实操提醒:确保JPA注解与@EntityListeners配合使用,并在启动类中启用审计功能。

MySQL中误设置的默认值如何删除?通过ALTER TABLE ALTER COLUMN修复

说实话,MySQL里删默认值挺简单的。
就用这个命令就行:
sql ALTER TABLE 表名 MODIFY COLUMN 列名 数据类型 DEFAULT '新默认值';
比如把users表的age列默认改成1 8 岁:
sql ALTER TABLE users MODIFY COLUMN age INT DEFAULT 1 8 ;
注意这几点: 1 . 删默认值后,如果列不允许空值,插数据就得手动填 2 . 用MODIFY COLUMN时,数据类型不能改 3 . 大表操作前一定先测测
以前我搞错过,忘了列不能为空,结果批量插入报错。
所以现在改默认值前,肯定先在测试库跑一遍。

批量改数据更要注意: 1 . 先查查哪些数据受影响 sql SELECT FROM 表名 WHERE 列名 = '错误默认值';
2 . 备份数据是必须的 bash mysqldump -u用户名 -p数据库名 表名 > backup.sql
3 . 大表分批改,比如每次改1 000条 sql UPDATE 表名 SET 列名 = '正确值' WHERE 列名 = '错误默认值' LIMIT 1 000;
4 . 改完后要确认改对了 sql SELECT COUNT() FROM 表名 WHERE 列名 = '错误默认值';
现在公司搞数据库变更都要走流程,默认值都得技术经理签字。
以前有个哥们儿把订单状态默认改成"已完成",结果全量数据都改了,客户投诉说订单都自动发货了。
那次之后,默认值都得业务和DBA一起确认。