Mysql中,可以使用: RENAME {DATABASE | SCHEMA} db_name
TO new_db_name
; 来修改database的名字。(database和schema的含义一样)。
比较疑惑的是,网上的某些方法是修改data目录下的文件名(文件名和数据库名相同),说这种方法只适合引擎为MyISAM的。对于INNODB,有一些方法:
1、备份原始数据库,再把数据导入到新的数据库。必然可行,但太麻烦了,如果数据量很大,需要花较长时间。
2、先把table的存储引擎改为MyISAM,再去data目录修改文件名。
3、作者称是比较好的方法:
假设源库名是’srcdb’,目标库名是’trgdb’
首先创建目标库
create database trgdb;
获取所有源库的表名
use information_schema;
select table_name from TABLES where TABLE_SCHEMA=’srcdb’;
然后按照以下命令一个个修改
rename table srcdb.[tablename] to trgdb.[tablename];
一个个执行下来之后表就转到新的库里面了.
然后作者说:网上瞎咧咧的什么RENAME DATABASE或者ALTER DATABASE都是不行的。
本来,我是不打算评论什么的。3也是一种方法,我没有去试过,但应该是可行的。只是“瞎咧咧”三个字让我非常不舒服。于是,我就在作者的启发下,去Mysql的手册里搜了一些。结果:RENAME {DATABASE | SCHEMA} db_name
TO new_db_name
; 写得清清楚楚,明明白白。可作者写得那么坚定,我还是不能放心呀,于是在自己的电脑了运行了一个例子。结果,数据库名顺利更改,没有任何的问题。
提出自己的观点, 否定一种方法,本毋庸置疑。可作为帖子发在网上,其他的人也会看到。这样一来,就很可能会误导他人。否定一种观点时,是否做过实验?是否有依据?每个人的观点都可能出现偏差,但那信口开河般的否定,还说的信誓旦旦,就让人很不舒服。
这次的经历,也算是得到了一些经验和教训。古有“尽信书,不如无书”之说,同样适用于今天的互联网。开发遇到问题时,可以马上google,可以参考别人的网页,但不能一味地相信。套用一句政治哲理:实践才是检验真理的唯一标准。