赞
踩
最近,写的程序需要进行离线升级安装,MySQL由v5.6升级到了v8.0,安装的过程中遇到了一些问题,记录备忘。
MySQL官网下载地址为MySQL :: Download MySQL Community Server,在Windows下的安装包有两种版本:
其中,我采用的是MSI版。
新版本中用UTF8MB4替换latin1作为默认字符编码。这意味着它需要更多的磁盘空间,因为UTF8在非US-ASCII字符上需要2个字节。并且默认排序规则从更改latin1_swedish_ci为utf8mb4_800_ci_ai。关于其他变化可前往MySQL从5.6到8.0及性能优化_8.0增删改查性能比5.6低-CSDN博客。
如果遇到MySQL 8.0降为MySQL 5.6的情况,可以如下操作:
- 打开sql文件
- 替换编码
- 所有utf8mb4_0900_ai_ci替换为utf8_general_ci
- 所有utf8mb4替换为utf8
- 处理sql后保存
- 重新在mysql库中导入sql文件
最开始,我用的是mysql-installer-community-8.0.17.0.msi。当卸载了v5.6后,安装MySQL 8.0.17时,MySQL installer在installation时,Status提示Ready to Download,会提示“Download of package MySQL server 8.0.17 failed with message No vavid download found for porduct MySQL 8.0.17”。离线环境下,无法Execute。
后来,我下载了mysql-installer-community-8.0.36.0.msi,这一子版本在加载程序时会先检测是否联网并提醒。若未联网,会以Offline状态安装,解决了8.0.17子版本未检测联网时出现的问题。
在安装时,要注意是否需要使用强密码。如不想使用,可选择类似于5.6版本的弱密码。
在新数据库执行就会报错sql_mode=only_full_group_by,意思是说数据库的模式是sql_mode=only_full_group_by,group by的字段必须和查询字段一致才行,否则不让执行。
这个错误发生在mysql 5.7.5 版本及以上版本会出现的问题:mysql 5.7.5版本以上默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了"SQL92标准"。
很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。
解决办法:修改数据库配置文件my.ini。在[mysqld]模块下新增或修改sql_mode变量。
- sql_mode="ONLY_FULL_GROUP_BY,..."
- 修改为
- sql_mode="STRICT_TRANS_TABLES,..."
建议1:关闭MySQL服务后修改my.ini文件,修改完成后重启MySQL服务。
建议2:使用notepad++进行修改,防止出现记事本改变文件的编码格式。
我出现的另一个问题:出现警告提示:“本地计算机上的MySQL服务启动后停止,某些在未由其他服务或程序使用时将自动停止”,MySQL无法开启或重启。原因是sql_mode多加了一个关键词NO_AUTO_CREATE_USER。没查原因,不添加该关键词可重启MySQL。
将本地数据库迁移到远程数据库时运行sql错误。原因可能是SQL文件太大,超过了MySQL的一次能接收的SQL最大长度。该最大接受值由系统变量max_allowed_packet 控制,在MySQL中的my.ini中mysqld段进行配置。
max_allowed_packet参数是指mysql服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小。如果超过了设置的最大长度,则会数据库保持数据失败。
MySQL 5.7的max_allowed_packet默认值为 4M=4194304=4*1024*1024,MySQL 8.0 开始已经增大到了64M。max_allowed_packet的最大值为1G,最小值为1K,默认值为4M,值为1024的倍数。
Windows7下,Chrome最高版本为 109.0.5414.149,更高的版本在Windows7下安装会失败。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。