Mysql8 避坑

出现 Syntax error or access violation: 1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER错误是因为在 MySQL 8.0 版本中,NO_AUTO_CREATE_USER 被移除了,不能作为 sql_mode 的值。

要解决这个问题,您可以尝试以下方法:

  1. 编辑 MySQL 配置文件:打开 MySQL 的配置文件,通常位于 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf,找到 sql_mode 的设置。

  2. 移除 NO_AUTO_CREATE_USER:在 sql_mode 的值中,移除包含 NO_AUTO_CREATE_USER 的部分。确保保留其他有效的 sql_mode 值。

例如,将类似这样的设置:

STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

   修改为:

sql_mode =‘ STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’

  1. 保存并关闭文件。

  2. 重启 MySQL 服务器:执行以下命令以重启 MySQL 服务器,使配置更改生效:

sudo systemctl restart mysql

  1. 再次尝试设置密码:按照之前的步骤重新设置 MySQL root 用户的密码。 6、在Laravel 中需要删除 config/database.php 中的
NO_AUTO_CREATE_USER

'strict' => false, 'modes' => ['STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_AUTO_CREATE_USER', 'NO_ENGINE_SUBSTITUTION'],//NO_AUTO_CREATE_USER mysql8需要注释

改为
'strict' => true,
'modes' => ['STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ENGINE_SUBSTITUTION'],//NO_AUTO_CREATE_USER mysql8需要注释

改完这些就可以了

码上有钱的博客
请先登录后发表评论
  • latest comments
  • 总共0条评论