阿里云 做网站 百度开放云,大理网站设计,怎么做自己的销售网站,网站开发总结 优帮云前沿
今天在使用flowable流程框架的时候#xff0c;遇到一个问题。需要配置MySQL数据库以实现表名大小写不敏感。本以为这是一个简单的任务#xff0c;却耗费了我两个多小时的时间。
docker容器中修改配置#xff0c;重启不成功
我们前提是容器中的mysql中已经有很多数据…前沿
今天在使用flowable流程框架的时候遇到一个问题。需要配置MySQL数据库以实现表名大小写不敏感。本以为这是一个简单的任务却耗费了我两个多小时的时间。
docker容器中修改配置重启不成功
我们前提是容器中的mysql中已经有很多数据库和表想直接修改配置。
1.修改配置文件
首先在容器的宿主机上编辑MySQL配置文件my.cnf添加以下配置项
[mysqld] lower_case_table_names1
2.重启mysql容器
由于我们容器已经在运行当中并且之前已经把自定义额配置文件挂载到了 MySQL 配置目录我们尝试直接重启容器
docker restart container_id3.### 检查容器状态并验证结果
我们执行docker ps, 查看mysql容器状态, 发现容容器在一直重启这时候我们使用命令docker logs container_id,查看容器日志报错内容如下 关键内容为
Different lower_case_table_names settings for server(1)and data dictionary (0)
Data Dictionary initialization failed.根据报错内容来分析来看设置的lower_case_table_names1与默认的字典值0不一致导致配置被拒绝。
解决方案
启动不成功后我在想有可能是mysql容器已经存在导致启动不成功。于是我把容器删除后重新创建容器也不行。只要把加的lower_case_table_names1配置去掉后就可以启动成功。
折腾了一会突然想到应该是已经有存在的表的问题。接着直接创建一个空数据内容的容器发现没问题。
1.备份数据
这里我用的是 Navicat, 操作简单方便。
2.清理现有容器
docker stop mysql-container
docker rm mysql-container
docker volume prune # 注意这会清除所有未使用的 Docker 卷谨慎使用3.重新创建容器
docker run --restartalways --privilegedtrue \ -v /opt/mysql/data2/:/var/lib/mysql \ -v /opt/mysql/logs/:/var/log/mysql \ -v /opt/mysql/conf/:/etc/mysql \ -v /opt/mysql/my.cnf:/etc/mysql/my.cnf \ -p 3306:3306 --name mysql \ -e MYSQL_ROOT_PASSWORD123456 -d mysql --lower_case_table_names1有时候可能在配置文件中修改不生效我们在启动命令上也加一下 lower_case_table_names1.
4.验证和恢复数据
我们进入容器后连接上mysql执行SHOW VARIABLES LIKE lower_case_table_names; 该命令如果输出lower_case_table_names 的值为 1这表明配置已生效。
配置生效后恢复我们的数据。
结束语
通过这次经历在之后处理Docker容器中的MySQL配置时需要对现有数据和配置的兼容性有充分的考虑。希望这次分享能够帮助其他开发者在遇到类似问题时能够更快地找到解决方案。
如果你觉得该文章不错不妨
1、点赞让更多的人也能看到这篇内容
2、关注我让我们成为长期关系
3、关注公众号「前端有话说」里面已有多篇原创文章和开发工具欢迎各位的关注第一时间阅读我的文章