【发布时间】:2018-12-19 16:16:31
【问题描述】:
我必须在现有(旧)数据库上构建 Laravel 应用程序。此数据库使用 0000-00-00 作为默认日期。我无法更改它,因为当前系统(也将保留)使用它来检查某些东西是否在无限时间内处于活动状态(例如:active_from0000-00-00 & active_till0000 -00-00 表示它始终处于活动状态。
我想在现有表中添加一列,所以我创建了一个迁移:add_columnname_to_tablename_table。在up() 函数中我做了:$table->string('columnname')。当我运行迁移时,我得到:
SQLSTATE[22007]:日期时间格式无效:1292 日期时间不正确 值:'0000-00-00 00:00:00' 用于第 1 行的列
active_from。
旧系统太大,无法对此进行任何更改——而且我无权更改它。
有没有办法让 Laravel 接受 0000-00-00 作为有效的日期(时间)?
【问题讨论】:
-
默认值可以使用字符串,否则日期格式
-
disabling
NO_ZERO_DATEsql_mode 在运行插入之前运行查询SET SESSION sql_mode = REPLACE(@@sql_mode. ',NO_ZERO_DATE'. '');可能有助于您的连接会话 -
更改所有日期以更正日期值并将默认值设置为 current_value 或某个有效值
标签: php mysql database laravel eloquent