Invalid default value for 'created_at'

Error 1067: Invalid default value for 'created_at'

mysql数据库升级到5.7+ 之后,以前的默认创建时间和更新时间的sql执行不成功了!

那么有好几种解决方式

  1. 关闭严格模式,

参考 mysql5.7关闭严格模式

  1. 修改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了


欢迎转载,但请附上原文地址哦,尊重原创,谢谢大家 本文地址: http://www.iphpt.com/detail/121/

当你能力不能满足你的野心的时候,你就该沉下心来学习