上一篇文章记录了升级8.0的详细步骤,记录mysql5.7升级mysql8.0遇到的问题及解决(一)
但在实际升级工作中其实遇到的很多问题,不过都一一解决了,下面记录下遇到的问题及解决方法。
问题1:
在cmd控制台输入 :mysqld --initialize --console,应该初始化MySQL并能看到root账户的密码。但实际操作时报“由于找不到VCRUNTIME140_1.dll,无法继续执行代码。重新安装程序可能会解决此问题”
解决方法:因电脑缺少组件导致的,双击安装下面这个程序,安装成功后在执行命令时即可解决该问题,
程序下载链接:pan.baidu.com/s/1QQG7W51m… 提取码:onoi
问题2:
执行mysqld --install命令安装MySQL服务为本地Windows服务时,遇到“提示install/Remove of the Service Denied”错误
只需要找到cmd.exe用管理员运行,在执行命令就可以成功解决该问题了
问题3:
mysql安装后navicat连接时提示1130-host ... is not allowed to connect to this MySql server错误
解决办法:
1、找到mysql安装路径 C:\Program Files\MySQL\MySQL Server 5.7\bin
2、执行cmd,打开命令窗口
3、连接服务器
mysql -u root -p
4、use mysql;
5、查看user表数据
select Host, User from user;
6、修改user表中的Host:(执行后在查询user表中root用户的host已变成%)
update user set Host='%' where User='root';
7、最后刷新一下:成功后,再次连接Navicat即可连接成功
flush privileges;
问题4:
数据脚本导入mysql8.0后,运行以前的程序后,会报以下错误
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'water_resource_tax.waterusera0_.ID' which is not functionally dependent on columns in GROUP BY clause
该错误是因为MySQL 5.7.5及以上功能增加了依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY)
解决方法:
用sql查询
select @@global.sql_mode
查询出来的值为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
去掉ONLY_FULL_GROUP_BY,重新设置值,即可解决该问题
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';