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

至此,问题解决