进入产品迭代阶段,修改数据库字段是不免的。除了咱们可以想到的,新增字段,必定要设置为“容许为空”或者设置“默认值”,当涉及到mysql的时间字段时,也要格外当心。java
下面是报错:mysql
java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp Query
CREATE TABLE `a` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO a(id, name) VALUES(1, "张三"); INSERT INTO a(id, name) VALUES(2, "李四");
ALTER Table a ADD COLUMN create_time timestamp not null DEFAULT CURRENT_TIMESTAMP; ALTER Table a ADD COLUMN update_time timestamp not null ON UPDATE CURRENT_TIMESTAMP;
INSERT INTO a(id, name) VALUES(3, "王五");
UPDATE a SET name="马六" WHERE id = 3;