一、MySQL 8.0不支持修改表名大小写的原因
关于数据库版本与表名大小写敏感参数设置的对应情况,你可参考下表。
| 参数 | 数据库版本 | 是否支持参数修改 | 说明 |
| lower_case_table_names | MySQL 5.5/5.6/5.7 | 支持 | – |
| | MySQL 8.0 | 不支持 | 为避免参数修改导致应用程序出现问题,仅支持在购买页创建实例时,选择是否开启表名大小写敏感。 |
以下描述的报错情况和处理步骤针对数据库版本为 MySQL 5.5/5.6/5.7 的实例,如你的实例数据库版本为 MySQL 8.0,你仅需了解以上表名大小写敏感背景说明即可。
二、现象描述
设置数据库大小写不敏感失败,报错如下:
三、可能原因
存在大写的库表名。
四、处理步骤
核实该实例下的库、表是否都是小写,如有大写的库表名,需要全部改为小写,然后修改 lower_case_table_names 参数。
注意:修改 lower_case_table_names 参数会造成数据库重启。
·排查是否有大写的表
select table_schema,table_name from information_schema.tables where table_schema not in("mysql","information_schema") and (md5(table_name)<>md5(lower(table_name)) or md5(table_schema)<>md5(lower(table_schema)));
·排查是否有大写的库
select SCHEMA_NAME from information_schema.SCHEMATA where md5(SCHEMA_NAME)<>md5(lower(SCHEMA_NAME));