升级到mysql8遇到的问题

问题

1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

解决方法

用户的 Authentication type 默认为 caching_sha2_password,导致数据库连接错误,抛出如下异常:

Illuminate\Database\QueryException : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

解决方案:修改密码认证方式 ALTER USER 'YOURUSERNAME'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOURPASSWORD';

问题

删除了 NO_AUTO_CREATE_USER 模式

解决方法

在 5.7.*的日志中提到已废除该模式,在8.0.11中删除了,迁移时会抛出如下异常:

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'

解决方案:将 config/database.php 配置文件中mysql 的 strict 的值改为false即可!

问题

The user specified as a definer

解决方案

mysql -u root -p
mysql> SET GLOBAL innodb_fast_shutdown = 1;
mysql_upgrade -u root -p