MacBook使用docker方式部署MySQL 8踩坑经历
2023-07-16
预计阅读时间:1分钟
问题:启动项目时报错Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'biz.XXL_JOB_QRTZ' doesn't exist
原因:MySQL大小写敏感配置
查看MySQL大小写敏感配置:show variables like '%case%'
如果区分大小写,则结果为:
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.01 sec)
常规思路:修改my.cnf
[mysqld]
lower_case_table_names=1
然而,重启MySQL发现一直无法启动成功,日志显示设置的lower_case_table_names=1
与默认的字典值0不一致,接着就拒绝了我的设置,后续如果你想要在my.cnf中修改此项,Mysql 8.0是不允许两者不一致的情况发生(5.7的版本是可以的,所以5.7的版本依然可以直接修改my.cnf)所以初始化后修改这个配置是不允许的。
终极解决方案:重新启动mysql,如果是第一次安装,那么docker后面直接加–lower-case-table-names=1是可以的。
如果不是第一次装,需要卸载掉原有的MySQL,-v /home/mysql/data:/var/lib/mysql 这里指定一个新的,干净的数据仓库。然后再--lower-case-table-names=1
即可
MySQL镜像启动命令(参考):
docker run --name mysql --restart=always \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/mysql/data2:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD="root" \
-e TZ=Asia/Shanghai \
-d mysql:8.0 --lower-case-table-names=1
至此,问题解决