我最近格式化了我的mac book pro,在从github克隆了proyect并安装了mysql和sequel pro等我需要的东西之后,我尝试迁移数据库信息,但出现了以下错误:
Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER' (SQL: select * from information_schema.tables where table_schema = fisica and table_name = migrations)
Exception trace:
1 PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'")
版本:
mysql 8.0.11版本
拉威尔5.6.12
php 7.1.14(cli)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=fisica
DB_USERNAME=xxx
DB_PASSWORD=xxx
我从sequel pro gui创建了数据库
7条答案
按热度按时间hi3rlvi21#
在阅读mysql 8.0文档时,看起来no\u auto\u create\u用户已从sql模式中删除。我怀疑您的my.cnf引用了这个,应该从您的conf和任何mysql内部设置中删除,然后重新启动mysqld。
请记住,我还没有升级到mysql 8.0,只是在阅读文档。我很高兴使用5.6。
https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html
使用grant创建用户。而是使用create user。遵循这种做法,no\u auto\u create\u user sql模式对于grant语句来说无关紧要,因此也被删除。
kokeuurv2#
实际上,您必须在与mysql驱动程序的每个连接的末尾添加此代码
vxqlmq5t3#
您的mysql版本不支持该sql模式。它在8.0版中被删除。支持此sql模式的最新版本是5.8。您的mysql版本可能是8或更高版本(laravel也应该更新)
注解掉或删除你的
config/database.php
文件uqzxnwby4#
几天前我终于找到了解决办法,我记得这篇文章。在
config/database.php
在mysql标记中,应该添加sql模式以跳过此错误。https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sql-模式已满我的mysql阵列最终是这样的:
apeeds0o5#
我的问题是配置中的数据库名称拼写错误。
31moq8wy6#
在文件中:
配置/database.php
同时禁用sql\U模式
通过sql:
通过my.cnf内部标题
[mysqld]
```sql_mode=NO_ENGINE_SUBSTITUTION
SHOW VARIABLES LIKE 'sql_mode';
brjng4g37#
我经历了上面的情况后,升级拉威尔从5.3到5.7它以前与MySQL8没有任何问题的工作接受的答案不适合我和谷歌搜索后,我没有找到一个解决方案。对我有用的是搜索我的项目文件夹
这让我想到
一旦我取下
NO_AUTO_CREATE_USER
从清单上看,一切又恢复了正常。