在使用Laravel5,配合MySQL5.7开发项目过程中,在执行 php artisan migrate 时,一直报错,报错内容是:
SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'created_at' (SQL: create table users (id int unsigned not null auto_increment primary key, ..... , created_at timestamp default 0 not null, updated_at timestamp default 0 not null) default character set utf8 collate utf8_unicode_ci)
执行migration文件不行,我就尝试从线上拷贝一份数据库文件下来,直接执行sql,发现还是报错。
最后各种查,才发现原因是:MySQL5.7不允许 timestamp 的默认值为0或者'0000-00-00 00:00:00'。
解决方案:
1、linux系统中,/etc/mysql/my.cnf 文件添加一行:
sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
2、windows系统中,my.ini 文件添加一行:
sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZE'
3、Laravel5项目中,修改 config/database.php 配置:
connections['mysql']['strict'] = false
记得修改完MySQL配置后,要重启服务才能生效。
本文为 陈华 原创,欢迎转载,但请注明出处:http://edu.ichenhua.cn/read/18