Home » Php » php – Syntax error or access violation: 1067 Invalid default value for 'created_at'

php – Syntax error or access violation: 1067 Invalid default value for 'created_at'

Posted by: admin July 12, 2020 Leave a comment

Questions:

I install laravel 5.5 and When I run php artisan migrate show me this error

[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQ
L: alter table users add unique users_email_unique(email))

And I add below code on AppServiceProvider.php

 public function boot()
{
     Schema::defaultStringLength(191); //Solved by increasing StringLength
}

And then show me this error

[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for ‘created_at’ (SQL: create table
password_resets
(email varchar(191) not null, token varchar(191) not null, created_at timestamp not null) de
fault character set utf8mb4 collate utf8mb4_unicode_ci)

How to&Answers:

You can use nullableTimestamps() instead of timestamps()

or

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

also check the database server version

Please have a look on these ref links:

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

Answer:

I’m currently using laravel 7.

I just go to config/database.php

Then I change strict => true to strict => false.

Then run the same migration again. It works.

Answer:

my case

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

this worked