• 欢迎来到小爱博客,一个分享互联网IT技术的网站,喜欢就收藏吧!

MySQL中数据库重命名

mysql 小爱 1个月前 (09-20) 23次浏览 已收录 0个评论 扫描二维码

表重名的话是rename table old_table to new_table; So,库的重命名最简单快捷的办法是 rename old_db to new_db么? 随便建了个测试库test,试着执行了一下臆想的rename命令,好吧,不行。搜了一下文档才发现,原来早期MySQL版本(5.1.7)中是有过这个命令的,后来出于安全考虑又在MySQL 5.1.23中移除了。。。

没事,咱还有别的办法嘛!之前还真没认真总结过,现在才简单整理一下吧(有些是参考其他朋友整理的)

1.若库中所有表为MyISAM引擎,则可改库对应的文件夹的名字
(现如今这种可能性几乎没有,而且该方法需要停机,不太实际)
关闭MySQL Server:

<code class="hljs bash has-numbering"><span class="hljs-built_in">sudo</span> /etc/init.d/mysql stop</code>

改目录名:

<code class="hljs haskell has-numbering"><span class="hljs-title">cd</span> /<span class="hljs-typedef"><span class="hljs-keyword">data</span>/mysql; mv old_db new_db;</span></code>

开启MySQL Server

<code class="hljs bash has-numbering"> <span class="hljs-built_in">sudo</span> /etc/init.d/mysql start</code>

2.重命名旧库下边的所有表

<code class="hljs r has-numbering">create databases new_db;
rename table old_db.table1 to new_db.table1,old_db.table2 to new_db.table2,<span class="hljs-keyword">...</span>;
drop database old_db;</code>

3.建新库,使用mysqldump工具导出老库数据并导入新库

<code class="hljs lasso has-numbering">mysqldump <span class="hljs-attribute">-uuser</span> <span class="hljs-attribute">-ppass</span> <span class="hljs-attribute">-hhost</span> <span class="hljs-attribute">-Pport</span><span class="hljs-subst">--</span>single<span class="hljs-attribute">-transaction</span> old_db <span class="hljs-subst">></span>old_db<span class="hljs-built_in">.</span>sql
mysql  <span class="hljs-attribute">-uuser</span> <span class="hljs-attribute">-ppass</span> <span class="hljs-attribute">-hhost</span> <span class="hljs-attribute">-Pport</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">"create database new_db"</span>
mysql  <span class="hljs-attribute">-uuser</span> <span class="hljs-attribute">-ppass</span> <span class="hljs-attribute">-hhost</span> <span class="hljs-attribute">-Pport</span>  new_db <span class="hljs-subst"><</span> old_db<span class="hljs-built_in">.</span>sql
mysql  <span class="hljs-attribute">-uuser</span> <span class="hljs-attribute">-ppass</span> <span class="hljs-attribute">-hhost</span> <span class="hljs-attribute">-Pport</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">"drop database old_db"</span></code>

其中方法2中表比较多的情况下,一个个写这些名称未免太痛苦了,可用shell脚本或者存储过程来完成

<code class="hljs bash has-numbering"><span class="hljs-shebang">#!/bin/bash</span>
mysqlconn=<span class="hljs-string">" mysql -uuser -ppass  -hhost -Pport ”
old_db=”old_db ”
new_db=”new_db ”
<span class="hljs-variable">$mysqlconn</span> -e “CREATE DATABASE <span class="hljs-variable">$new_db</span>”
params=<span class="hljs-variable">$($mysqlconn -N -e “SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=’$old_db’”)</span>
for name in <span class="hljs-variable">$params</span>; do
<span class="hljs-variable">$mysqlconn</span> -e “RENAME TABLE <span class="hljs-variable">$old_db</span>.<span class="hljs-variable">$name</span> to <span class="hljs-variable">$new_db</span>.<span class="hljs-variable">$name</span>”;
done;
<span class="hljs-variable">$mysqlconn</span> -e “DROP DATABASE <span class="hljs-variable">$old_db</span>”</span></code>

小爱博客 , 版权所有
转载请注明原文链接:MySQL中数据库重命名
喜欢 (0)
【你的支持, 我的动力】
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址