Laravel 5.5 с MySQL 8.0.11: "sql_mode" не может быть установлен в значение "NO_AUTO_CREATE_USER"

Я только что установил 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?

Ответ 2

ваше соединение 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',
            ],
    ],

Ответ 3

Добавьте следующее в каждое из ваших подключений MySQL:

'modes' => [
     'ONLY_FULL_GROUP_BY',
     'STRICT_TRANS_TABLES',
     'NO_ZERO_IN_DATE',
     'NO_ZERO_DATE',
     'ERROR_FOR_DIVISION_BY_ZERO',
     'NO_ENGINE_SUBSTITUTION',
],

Ответ 5

Поскольку MySQL 8.0 в этот момент (как и сегодня) не NO_AUTO_CREATE_USER, вы должны найти и заменить "NO_AUTO_CREATE_USER" на Space

таким образом Backup из 5.7 восстановит нормально в 8.0