栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker容器启动mysql:Different lower

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker容器启动mysql:Different lower

因为公司项目要部署一套离线环境,在一台没有装过东西的笔记本上部署。都装好后,项目启动了,结果报表不存在,百度一看,Linux中mysql默认是区分大小写的。
lower-case-table-names=0

#区分大小写
lower-case-table-names=0
#不区分大小写
lower-case-table-names=1

报错信息上图:

1.有的说改/etc/my.cnf,然后docker restart mysql
[mysqld]
lower_case_table_names = 1

结果:也是上面图片里的错;

2.在修改/etc/my.cnf的前提下,再加一条启动参数,重新启动

在-d 的后面加上 --lower-case-table-names=1;因为报错说的server里面的setting跟data dirctionary里面的值不一样嘛,然后就试试改成一样。接下来docker rm xxxx后,再执行。

docker run -p 3306:3306 --name mysql 
-v /xxxxx/xxxxx/mysql/log:/var/log/mysql 
-v /xxxxx/xxxxx/mysql/data:/var/lib/mysql 
-v /xxxxx/xxxxx/mysql/conf/my.cnf:/etc/mysql/my.cnf 
-e MYSQL_ROOT_PASSWORD=xxxxxxx
-d mysql --lower-case-table-names=1

结果:也是错的。
然后继续找,最后发现,因为我启动过mysql服务,生成了数据仓库。而mysql官网说:

After initialization, is is not allowed to change this setting.So "lower_case_table_names" needs to be set together with --initialize .

咱也看不懂,谷歌翻译呗:初始化后,不允许更改此设置。因此“lower_case_table_names”需要与 --initialize 一起设置。
接下来就明确了,初始化以后生成的数据不就是再我挂载的/xxxxx/xxxxx/mysql/data目录中嘛,反正我这个都是离线的项目,直接rm -rf /xxxxx/xxxxx/mysql/data/*,数据都是备份了的。为了能一次成功,我连log里面的都给干掉了。

1里面修改过的my.cnf保持不变。2里面的命令也不变。直接执行,然后查看

芜湖起飞!成功。
对了,我这个就是为了记录一下这个问题,很水,专业的还要参考大佬的文章

https://blog.csdn.net/p793049488/article/details/108365929?utm_term=–lower_case_table_names=1docker&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-0-108365929&spm=3001.4430

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277899.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号