如何将CURRENT_TIMESTAMP设置为列的默认值

时间:2019-09-20 10:07:09

标签: laravel database-migration laravel-6

使用laravel迁移,我想将CURRENT_TIMESTAMP设置为created_at列的默认值。

我不知道该错误是否是由于将laravel从5.7迁移到6而引起的

这是我的迁移文件:

Schema::create('activities', function (Blueprint $table) {

        $table->engine = 'InnoDB';
        $table->charset = 'utf8mb4';
        $table->collate = 'utf8mb4_unicode_ci';

        $table->bigIncrements('id')->unsigned();
        $table->unsignedInteger('user_id')->nullable()->index('idx_user_id');
        $table->string('ip', 50);
        $table->string('user_agent', 255);
        $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));

    });

以及控制台中的错误:

  

Doctrine \ DBAL \ Driver \ PDOException::(“” SQLSTATE [42000]:语法错误或   访问冲突:1064您的SQL语法错误;检查   与您的MySQL服务器版本相对应的手册   在'(CURRENT_TIMESTAMP))默认字符集utf8mb4附近使用的语法   在第1行整理'utf8mb4_unicode_ci''”

MySQL版本:5.7.23

PHP版本:7.2.10

Laravel版本:6.0.2

0 个答案:

没有答案