2017-02-22 13 views
0

При обновлении до Laravel 5.4 и MySQL 5.7, миграции не работают больше, и я получаю эту ошибку:Недопустимое значение по умолчанию для «столбца»

[Illuminate\Database\QueryException] 
    SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'updated_at' (SQL: create table `tracker_paths` (`id` bigint unsigned not null auto_increment primar 
    y key, `path` varchar(255) not null, `created_at` timestamp not null, `updated_at` timestamp not null) default character set utf8mb4 collate utf8mb4_unicode_ci engine = InnoDB ROW_FO 
    RMAT=DYNAMIC) (SQL: SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'updated_at' (SQL: create table `tracker_paths` (`id` bigint unsigned not null a 
    uto_increment primary key, `path` varchar(255) not null, `created_at` timestamp not null, `updated_at` timestamp not null) default character set utf8mb4 collate utf8mb4_unicode_ci en 
    gine = InnoDB ROW_FORMAT=DYNAMIC)) 

Что я должен делать?

+0

Соответствующий код миграции также должен быть включен. –

ответ

2

Это связано с режимом SQL STRICT_TRANS_TABLES, поэтому у вас есть три варианта:

1) Зафиксируйте ваши миграции.

2) Изменение строги к ложным в вашей связи MySQL:

'mysql' => $database = [ 
    ... 
    'strict' => false, 
    ... 
], 

Какой будет отключить все эти SQL режимы:

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 

3) Установка пользовательских режимов, удаление STRICT_TRANS_TABLES

'mysql' => $database = [ 
    ... 
    'modes' => "set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'", 
    ... 
], 
Смежные вопросы