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?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
23
0
25 322
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

В следующем выпуске 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 8.0 не поддерживает NO_AUTO_CREATE_USER

Документация: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html

Добавьте следующее в каждое из ваших подключений 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 вы должны найти и заменить в своей резервной копии: «NO_AUTO_CREATE_USER» на пробел

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

Я использую MySQL 8.0.18 на Windows Wampserver и добавляю ниже в database.php для Laravel

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

Как исправить Laravel NO_AUTO_CREATE_USER код для database.php


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

Другие вопросы по теме