Error 1067: Invalid default value for ‘created_at’
mysql数据库升级到5.7+ 之后,以前的默认创建时间和更新时间的sql执行不成功了!
那么有好几种解决方式
如果担心严格模式关闭有什么影响,可以对sql进行修改 比如 我之前sql是
CREATE TABLE IF NOT EXISTS `z_posts` (`id` INT(10) PRIMARY KEY AUTO_INCREMENT NOT NULL, `uid` VARCHAR(255) NULL COMMENT 'uid', `user_id` INT(11) NOT NULL COMMENT '用户ID', `title` VARCHAR(255) NOT NULL COMMENT '标题', `summary` CHAR(255) NOT NULL COMMENT '摘要', `original` TEXT NOT NULL COMMENT '原文章内容', `content` TEXT NOT NULL COMMENT '文章内容', `password` VARCHAR(255) NOT NULL COMMENT '文章密码', `deleted_at` TIMESTAMP NULL, `created_at` TIMESTAMP DEFAULT 'CURRENT_TIMESTAMP' NOT NULL, `updated_at` TIMESTAMP DEFAULT 'CURRENT_TIMESTAMP' NOT NULL) ENGINE=InnoDB DEFAULT CHARSET utf8;
执行就会报错!
可以修改这条语句
首先把 ` 符号给去掉
然后修改成
CREATE TABLE IF NOT EXISTS `z_posts` (`id` INT(10) PRIMARY KEY AUTO_INCREMENT NOT NULL, `uid` VARCHAR(255) NULL COMMENT 'uid', `user_id` INT(11) NOT NULL COMMENT '用户ID', `title` VARCHAR(255) NOT NULL COMMENT '标题', `summary` CHAR(255) NOT NULL COMMENT '摘要', `original` TEXT NOT NULL COMMENT '原文章内容', `content` TEXT NOT NULL COMMENT '文章内容', `password` VARCHAR(255) NOT NULL COMMENT '文章密码', `deleted_at` TIMESTAMP NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL on update CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET utf8;
就ok了
本站(PHP --> Golang)已重构,代码开源
当你能力不能满足你的野心的时候,你就该沉下心来学习