10
votes

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)

3
after setting defaultStringLength, did you rollback (dropped) the tables ?Jigar Shah
what is your mysql versionGaurav Rai
Did you deleted old db contents?Sreejith BS
@JigarShah Yes I delete databaseparanoid

3 Answers

19
votes

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

8
votes

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.

2
votes

my case

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

this worked