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
[〜#〜] update [〜#〜]:Laravel 5.5.41がリリースされました。
あなたのlaravel connexion(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」を検索して置換する必要があります。
これにより、5.7からのバックアップは8.0で正常に復元されます