laravel 报错Invalid default value for 'created_at'「已解决」

本文介绍了使用Laravel4.2框架与MySQL5.7数据库时出现的时间戳默认值错误问题,并提供了两种解决方案:一是调整MySQL配置以放宽限制,二是更改Laravel的database.php设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题#

PHPHub 使用的是 Laravel 4.2,之前一直使用 homestead box 的版本是 0.2.2 一直没遇到问题,升级到 0.3.3 以后报错

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)

搜索结果进入框架讨论的 issue:https://github.com/laravel/framework/issues/3602

原来是 Laravel 4.2 和 Mysql 5.7 搭配出了问题,5.7 里 Mysql 不允许时间戳的值为 0 。

解决#

方案1. 修改默认的 Mysql 配置#

sudo vi /etc/mysql/my.cnf

[mysqld] 区域添加:

sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

方案2. 修改 database.php#

在 Mysql 区域最后面新加一行

'strict'    => true

file

转载于:https://www.cnblogs.com/jdwang-admin/p/7365751.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值