web-dev-qa-db-fra.com

Laravel 5.5 avec MySQL 8.0.11: 'sql_mode' ne peut pas être défini sur la valeur de 'NO_AUTO_CREATE_USER'

Je viens d'installer MySQL 8.0.11, y a transféré la base de données de mon application et modifié les paramètres de la laravel base de données pour utiliser la nouvelle. Maintenant, chaque fois que j'essaie de me connecter, l'erreur suivante s'affiche:

ERROR 1231 (42000):
Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

J'ai essayé de mettre NO_AUTO_CREATE_USER manuellement:

set global sql_mode="..., NO_AUTO_CREATE_USER, ...";

Mais je reçois la même erreur. Comment pourrais-je résoudre le problème et exécuter laravel 5.5 avec MySQL 8.0.11?

12
chevallier

La prochaine version de Laravel 5.5 ajoutera une prise en charge de MySQL 8.0: https://github.com/laravel/framework/pull/24038

[~ # ~] mise à jour [~ # ~] : Laravel 5.5.41 a été publié.

6
Jonas Staudenmeir

votre connexion laravel (config/database.php) devrait être telle que:

'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',
            ],
    ],
20
eValdezate

Ajoutez les éléments suivants sur chacune de vos connexions MySQL:

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

MySQL 8.0 ne supporte pas NO_AUTO_CREATE_USER

Documentation: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html

2
KAGG Design

Depuis que MySQL 8.0 (à ce jour) ne supporte pas NO_AUTO_CREATE_USER, vous devez trouver et remplacer dans votre sauvegarde: "NO_AUTO_CREATE_USER," par Space.

de cette façon, la sauvegarde de la version 5.7 restaurera ok dans la version 8.0

1
Pemtium