Laravel5.5和MySQL 8.0.11:&x27;sql#U模式';can';t设置为';无自动创建用户';
我刚刚安装了MySQLLaravel5.5和MySQL 8.0.11:&x27;sql#U模式';can';t设置为';无自动创建用户';,mysql,laravel,laravel-5.5,Mysql,Laravel,Laravel 5.5,我刚刚安装了MySQL8.0.11,将我的应用程序的数据库转移到其中,并更改了laravel数据库设置以使用新的数据库。现在,每次尝试登录时,都会出现以下错误: ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER' 我试图手动设置NO\u AUTO\u CREATE\u USER: set global sql_mode="..., NO_AUTO_CREATE_US
8.0.11
,将我的应用程序的数据库转移到其中,并更改了laravel数据库设置以使用新的数据库。现在,每次尝试登录时,都会出现以下错误:
ERROR 1231 (42000):
Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'
我试图手动设置NO\u AUTO\u CREATE\u USER
:
set global sql_mode="..., NO_AUTO_CREATE_USER, ...";
但我也犯了同样的错误。我如何解决这个问题并使用MySQL运行laravel
5.5
?laravel 5.5的下一个版本将增加对MySQL 8.0的支持:
更新: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不支持无自动创建用户
文档:在每个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 您应该在备份中按空格查找并替换:“无自动创建用户”
通过这种方式,5.7的备份将在8.0中恢复正常。我正在Windows Wampserver上使用MySQL 8.0.18,并将以下内容添加到database.php for 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\u AUTO\u CREATE\u用户 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',
]