最近部署项目,遇到mysql版本问题,数据库大小敏感问题,在此记录一下
方法1:修改配置文件
lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感。
lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作。
打开my.cnf文件,在【mysqlId】下加入以下语句后【重启】。
lower_case_table_names = 0 或 lower_case_table_names = 1
方法2:执行存储过程
xxx 改成自己数据库对应的账号,数据库改成自己的,那些需要转换的改成相应的名字
CREATE DEFINER=`xxx`@`%` PROCEDURE `uppercase`(IN dbname VARCHAR(200))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE oldname VARCHAR(200);
DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.TABLES tt WHERE table_schema = '库名' and tt.table_name LIKE 'tt_% 表名';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur;
REPEAT
FETCH cur INTO oldname;
SET @newname = UPPER(oldname);
SET @isNotSame = @newname <> BINARY oldname;
IF NOT done && @isNotSame THEN
SET @SQL = CONCAT('rename table `',oldname,'` to `', LOWER(@newname), '_tmp` ');
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt;
SET @SQL = CONCAT('rename table `',LOWER(@newname),'_tmp` to `',@newname, '`');
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt;
DEALLOCATE PREPARE tmpstmt;
END IF;
UNTIL done END REPEAT;
CLOSE cur;
END
注意
如果有权限可以修改mysql的配置,就用第一种,不能就试试第二种。