最近遇到一个问题,项目在Windows里运行正常,但在Linux里运行时就报错,提示好多表不存在,经过排查发现MySQL数据库中表名是大写的,然后报错信息里表名是小写的,于是我大胆的推测可能是Linux里MySQL默认对表大小写敏感,经过修改最后项目在Linux里也成功运行。

查看MySQL是否对表大小写敏感

   查询结果:

        lower_case_table_names=0(默认)区分大小写

        lower_case_table_names=1表示不区分大小写

show Variables like '%table_names';

修改操作

        修改/etc/my.cnf,在[mysqld]后边添加lower_case_table_names=1 重启mysql服务。

其他

        MySQL在linux里是对表名大小写敏感,而在Windows中是对表名大小写不敏感的。

Docker 修改mysql 表大小写敏感

        由于Linux里我是用Docker部署MySQL的,而mysql容器中没有vi命令也没有vim命令,又不想装,于是就用另外一种方式。

1.查看mysql配置文件 mysqld.cnf

docker exec b0aec76e2859 cat /etc/mysql/mysql.conf.d/mysqld.cnf

2.将配置文件mysqld.cnf从容器复制到宿主机/home

docker cp   b0aec76e2859:/etc/mysql/mysql.conf.d/mysqld.cnf  /home/mysqld.cnf

3.在配置文件mysqld.cnf中添加 lower_case_table_names=1

   进入到/home目录下,找到mysqld.cnf,这里直接用vim改就好

4.将配置文件从宿主机复制到容器

docker cp /home/mysqld.cnf b0aec76e2859:/etc/mysql/mysql.conf.d/

5.重新启动容器

docker restart b0aec76e2859
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐