因为公司项目要部署一套离线环境,在一台没有装过东西的笔记本上部署。都装好后,项目启动了,结果报表不存在,百度一看,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

GitHub 加速计划 / li / linux-dash
10
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:29 天前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐