语法错误或访问冲突:1067' created_at'

时间:2017-08-29 09:13:29

标签: php mysql laravel laravel-5

我安装laravel 5.5并且当我运行php artisan migrate时显示此错误

  

[照亮\数据库\ QueryException]     SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长;最大密钥长度为767字节(SQ     L:alter table users添加唯一users_email_uniqueemail))

我在AppServiceProvider.php

上添加了以下代码
 public function boot()
{
     Schema::defaultStringLength(191); //Solved by increasing StringLength
}

然后告诉我这个错误

  

[照亮\数据库\ QueryException]     SQLSTATE [42000]:语法错误或访问冲突:1067' created_at'的默认值无效。 (SQL:create table password_resetsemail varchar(191)not null,token varchar(191)not null,created_at timestamp not null)de     故障字符集utf8mb4 collat​​e utf8mb4_unicode_ci)

3 个答案:

答案 0 :(得分:7)

您可以使用nullableTimestamps()代替timestamps()

$table->timestamp('created_at')->default(\DB::raw('CURRENT_TIMESTAMP'));

请查看以下参考链接:

https://github.com/laravel/framework/issues/3602

https://laracasts.com/discuss/channels/forge/syntax-error-or-access-violation-1067-invalid-default-value-for-created-at

答案 1 :(得分:2)

我当前正在使用laravel 7。

我只是去config / database.php

然后我将strict => true更改为strict => false

然后再次运行相同的迁移。可以。

答案 2 :(得分:0)

我的案子

        $table->timestamp('deleted_at')->nullable()->default(null);

这有效