Docker 安装 MySQL 表文件区分 大小写问题 lower_case_table_names
MySQL 大小写敏感规则
MySQL中,一个库会对应一个文件夹,库里的表会则以文件的方式存放在文件夹内,所以,操作系统对大小写的敏感性决定了数据库和表的大小写敏感(MySQL有一个只读的系统变量lower_case_file_system,其值反映的正是当前文件系统是否区分大小写)因此:在Windows下Mysql的数据库和表名是大小写不敏感的,而在大多数类型的Unix系统中是大小写敏感的
默认情况下MySQL的大小写区分规则
在Linux下:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
在Windows下:
全部不区分大小写
参数解释
lower_case_file_system
只读的不能更改,数据库所在的文件系统对文件名大小写敏感度。
ON 不区分大小写
OFF 区分大小写
lower_case_table_names
0:区分大小写
1:不区分大小写
更改/查看 参数
更改
my.cnf [mysqld] lower_case_table_names=1 mysql中更改 mysql> set global lower_case_table_names=1;
查看
mysql> show variables like 'lower%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names | 0 | +------------------------+-------+ 2 rows in set (0.01 sec)
docker 设置
docker 运行设置 lower_case_table_names
docker run -td --name mysql2 -e MYSQL_ROOT_PASSWORD='hello123' -v /tmp/hah:/var/lib/mysql --privileged=true mysql:5.7.9 mysqld --lower_case_table_names=1
需要加 --privileged=true 参数,否则挂载的文件没有权限。因为 mysql 是以为 mysql 用户运行的,而非 root 运行的
k8s 设置
把 command 改为 /entrypoint.sh mysqld --lower_case_table_names=1
共 0 条评论