博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将现有MySQL数据库改为大小写不敏感
阅读量:5897 次
发布时间:2019-06-19

本文共 1659 字,大约阅读时间需要 5 分钟。

用过MySQL的应该都会注意到,默认情况下,Linux下安装的MySQL是大小写敏感的,也就是说Table1和table1可以同时存在。而Windows下的MySQL却是大小写不敏感的,所有表名和数据库名都会变成小写。

对于怎么启用或者停用MySQL数据库的大小写敏感,这个网上随便都能找到,就是改改参数lower_case_table_names,然后重启即可。

但是,如果我们的数据库中已经有了多个区分大小写的数据库,现在要改为不区分大小写的,那么就会报错:Table 'databasenamexxx.tablenamexxx' doesn't exist.

为此,我们需要将MySQL改为大小写敏感的模式,然后去重命名每个表名和数据库名。

MySQL确实很神奇的一点是不允许重命名数据库,所以如果我们要重命名Test1为test1,那么只有新建一个test1的数据库,然后把Test1中的表全面rename到test1数据库中。

而且在rename的过程中,我们也需要将表面从大小写的形式改为全部小写的形式。

为了批量的做这么一件事,与,我写了一个存储过程,通过读取系统表,获得数据库表名,然后用游标的方式依次执行rename操作。

DELIMITER //CREATE PROCEDURE renametables(olddb VARCHAR(50),newdb VARCHAR(50)) BEGIN DECLARE done BOOLEAN DEFAULT 0; DECLARE tmp VARCHAR(100); -- 定义局部变量DECLARE tbcur CURSOR     FOR    SELECT TABLE_NAME FROM `information_schema`.`TABLES` WHERE table_schema=olddb AND Table_Type='BASE TABLE';     DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;     OPEN tbcur;  -- 打开游标    REPEAT      FETCH tbcur INTO tmp;      IF done=0      THEN       SET @sqlstring=CONCAT( 'RENAME TABLE ',olddb,'.`',tmp,'` TO ',newdb,'.`',LOWER(tmp),'`;');       SELECT @sqlstring; -- 这一句可以不要,只是打印我们拼接后要运行的SQL是什么      PREPARE s1 FROM  @sqlstring; -- 执行拼接出来的SQL       EXECUTE s1;        DEALLOCATE PREPARE s1;        END IF;      UNTIL done END REPEAT;     CLOSE tbcur; -- 关闭游标,释放游标使用的所有内部内存和资源         END//

 

    

我们在新数据库中建立了该存储过程,然后调用即可:

CALL renametables('Test1','test1')

这样所有Test1中的大小写混合的表,就全部转换到了test1数据库中,而且表名都变成了小写了。

一个一个的数据库去这么做,然后再把MySQL的参数改为大小写不敏感,这样才能正常使用。

这里我只是做了表的迁移,接下来存储过程和视图的迁移,由于不涉及到数据,所以比较简单,找到当年的DDL或者我们在大小写敏感的时候就导出View和存储过程的定义,然后用文本编辑器把整个SQL变成小写的,然后到新数据库中去执行,重新创建即可。

本文转自深蓝居博客园博客,原文链接:http://www.cnblogs.com/studyzy/p/6122739.html,如需转载请自行联系原作者

你可能感兴趣的文章
python类 del_全面了解Python类的内置方法
查看>>
java jni 原理_使用JNI技术实现Java和C++的交互
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
SILK 的 Tilt的意思
查看>>
Html学习笔记3
查看>>
HDFS dfsclient写文件过程 源码分析
查看>>
ubuntu下安装libxml2
查看>>
nginx_lua_waf安装测试
查看>>
WinForm窗体缩放动画
查看>>
JQuery入门(2)
查看>>
linux文件描述符
查看>>
传值引用和调用引用的区别
查看>>
hyper-v 无线网连接
查看>>