Laravel 5.5 with MySQL 8.0.11: 'sql_mode' 无法设置为 'NO_AUTO_CREATE_USER' 的值
Laravel 5.5 with MySQL 8.0.11: 'sql_mode' can't be set to the value of '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 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',
],
],
MySQL8.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," by Space
这样从5.7备份到8.0就可以恢复了
我在 Windows Wampserver 上使用 MySQL 8.0.18 并将以下内容添加到 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',
]
我刚刚安装了 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',
],
],
MySQL8.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," by Space
这样从5.7备份到8.0就可以恢复了
我在 Windows Wampserver 上使用 MySQL 8.0.18 并将以下内容添加到 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',
]