Ответ 1
В следующем выпуске Laravel 5.5 будет добавлена поддержка MySQL 8.0: https://github.com/laravel/framework/pull/24038.
ОБНОВЛЕНИЕ: Laravel 5.5.41 был выпущен.
Я только что установил MySQL 8.0.11
, переместил в него свою базу данных приложений и изменил параметры базы данных laravel, чтобы использовать новую. Теперь каждый раз, когда я пытаюсь войти в систему, я получаю следующую ошибку:
ERROR 1231 (42000):
Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'
Я попытался установить NO_AUTO_CREATE_USER
вручную:
set global sql_mode="..., NO_AUTO_CREATE_USER, ...";
Но я получаю ту же ошибку. Как я могу решить проблему и запустить laravel 5.5
с MySQL 8.0.11
?
В следующем выпуске Laravel 5.5 будет добавлена поддержка MySQL 8.0: https://github.com/laravel/framework/pull/24038.
ОБНОВЛЕНИЕ: Laravel 5.5.41 был выпущен.
ваше соединение laravel (config/database.php) должно быть таким, чтобы:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
'modes' => [
'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ENGINE_SUBSTITUTION',
],
],
Добавьте следующее в каждое из ваших подключений MySQL:
'modes' => [
'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ENGINE_SUBSTITUTION',
],
MySQL 8.0 не поддерживает NO_AUTO_CREATE_USER
Документация: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html
Поскольку MySQL 8.0 в этот момент (как и сегодня) не NO_AUTO_CREATE_USER, вы должны найти и заменить "NO_AUTO_CREATE_USER" на Space
таким образом Backup из 5.7 восстановит нормально в 8.0