(Laravel) 运行迁移时出现不正确的日期时间格式错误

Posted

技术标签:

【中文标题】(Laravel) 运行迁移时出现不正确的日期时间格式错误【英文标题】:(Laravel) Getting an incorrect datetime format error when running a migration 【发布时间】:2017-11-02 21:41:12 【问题描述】:

我只是想在现有表中添加一个新列。这是我的迁移:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddWarehouse extends Migration

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    
        Schema::table('routes', function (Blueprint $table)
            $table->string('warehouse_address');
        );
    

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    
        Schema::table('routes', function (Blueprint $table)
            $table->dropColumn(['warehouse_address']);
        );
    

运行 php artisan migrate 导致如下错误:

 [Illuminate\Database\QueryException]
 SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '0000-00-00 00:00:00' for column 'created_at' at row 1 (SQL: alter table `routes` add `warehouse_address` varchar(255) not null)



 [Doctrine\DBAL\Driver\PDOException]
 SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '0000-00-00 00:00:00' for column 'created_at' at row 1



 [PDOException]
 SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '0000-00-00 00:00:00' for column 'created_at' at row 1

该表包含已填充正确值的列“created_at”和“updated_at”。如何阻止 Schema 尝试将日期时间插入“created_at”列?我宁愿不理它。

mysql 中执行命令效果很好。

编辑:当我尝试在没有“created_at”和“updated_at”列的表上运行相同的迁移时,我得到了同样的错误。

【问题讨论】:

【参考方案1】:

public $timestamps = false; 放在 Route 模型中会阻止 Eloquent 尝试更新它们。

(参见:Disable Laravel's Eloquent timestamps)

【讨论】:

感谢您的评论。我注意到我对模型所做的更改不会对错误消息产生影响。即使将代码添加到应该引发语法错误的模型中也没有什么区别。这让我相信迁移没有连接到正确的模型。类名最初是复数。我在 Laravel 命名约定中出现了单数。不幸的是,这并没有解决问题。有什么建议吗?我应该注意到,该模型在我的项目的其余部分工作得非常好。 好吧,如果是这样的话,第 1 行条目的时间戳似乎是 0000-00-00 00:00:00,这是无效的。可能是您的代码中的所有内容都正常工作,但默认情况下该条目被赋予了一个奇怪的时间戳。如果可能,您能否检查数据库以查看为什么该行的时间戳全为零?

以上是关于(Laravel) 运行迁移时出现不正确的日期时间格式错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel,尝试通过 AJAX 向控制器传递数据时出现不匹配的令牌错误

尝试使用多个值插入 SQL Server 时出现不正确的语法错误

工匠跳过迁移

在数据块上运行 sql 查询时出现不匹配错误

运行仪器测试离子Gitlab CI时出现不兼容的AVD错误

PySpark - 运行 Count() / 聚合函数(平均等)时出现不一致