Ken*_*ink 5 php mysql database laravel eloquent
我必须在现有(旧)数据库上构建 Laravel 应用程序。该数据库使用 0000-00-00 作为默认日期。我无法更改此设置,因为当前系统(也将保留)使用它来检查某些内容是否在无限时间内处于活动状态(例如:active_from
0000-00-00 和active_till
0000-00-00 表示它是始终处于活动状态)。
我想向现有表添加一列,因此我创建了一个迁移:add_columnname_to_tablename_table
。up()
在我做的函数中: $table->string('columnname')
. 当我运行迁移时,我得到:
SQLSTATE[22007]:无效的日期时间格式:1292 不正确的日期时间值:第
active_from
1 行的列的“0000-00-00 00:00:00”。
旧系统太大,无法对此进行任何更改——而且我也不被允许更改它。
有没有办法让 Laravel 接受 0000-00-00 作为有效日期(时间)?
这主要是 MySql 问题,因为较新版本的 MySql 禁用了零日期。此外,该NO_ZERO_DATE
模式已被弃用(请参阅: https: //dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_zero_date)。为了解决这个问题,您可以将数据库中的所有零日期更改为 unix 纪元时间1970-01-01 00:00:00
(这是我在升级 MySql 后必须对我的数据库所做的)。