我创建了一个名为hrms
的数据库。现在我需要将数据库名称更改为sunhrm
。但是,在MySQL workbench中该功能已禁用。我能否在Linux服务器上进行此操作?
我创建了一个名为hrms
的数据库。现在我需要将数据库名称更改为sunhrm
。但是,在MySQL workbench中该功能已禁用。我能否在Linux服务器上进行此操作?
如果您需要从命令行执行此操作,只需复制、修改并粘贴此片段:
mysql -e "CREATE DATABASE \`new_database\`;"
for table in `mysql -B -N -e "SHOW TABLES;" old_database`
do
mysql -e "RENAME TABLE \`old_database\`.\`$table\` to \`new_database\`.\`$table\`"
done
mysql -e "DROP DATABASE \`old_database\`;"
我认为您无法这样做。基本答案在许多情况下可以使用,但在其他情况下可能会导致数据损坏。需要根据对数据库的启发式分析选择一种策略。
这就是为什么此功能被实现,然后又被移除的原因。 [文档]您需要转储该数据库中的所有对象类型,创建新命名的数据库,然后导入转储文件。如果这是一个在线系统,您需要将其关闭。如果无法关闭,则需要设置从此数据库到新数据库的复制。
如果想要查看能够执行此操作的命令,@satishD提供了详细信息,其中传达了一些围绕着您需要构建与目标数据库相匹配的策略而存在的挑战。
mysqldump -u root -p old_db|mysql -u root -p new_db
。 - Pacerieroriginal_database.sql
文件,并在顶部注释掉 CREATE DATABASE …
和 USE …
语句,以避免创建/使用原始数据库。 - Jens可以使用mysqldump命令在不将转储存储到文件的情况下复制数据库:
mysql -u root -p -e "create database my_new_database"
mysqldump -u root -p original_database | mysql -u root -p my_new_database
mysql -u root -p -e "drop database original_database"
创建名为"other_db"的新模式后,对于您的"current_db"中的每个表格,可以通过RENAME语句来完成。
RENAME TABLE current_db.tbl_name TO other_db.tbl_name
源自 重命名表格语法
我使用以下方法重命名数据库:
使用mysqldump或任何DB工具(例如heidiSQL,mysql administrator等)备份文件。
在某个文本编辑器中打开备份文件(例如backupfile.sql)。
搜索并替换数据库名称,并保存文件。
恢复编辑后的SQL文件。
简而言之,不行。通常认为重新命名数据库太危险了。MySQL曾经有这个功能,但现在已经被删除了。你最好使用工作台将架构和数据导出到SQL,然后在运行/导入之前更改CREATE DATABASE的名称。
data
目录并重命名数据库目录(注意:非字母字符需要以特殊方式编码)对于像我这样不耐烦的 MySQL 用户,解决方案是:
/etc/init.d/mysql stop
mv /var/lib/mysql/old_database /var/lib/mysql/new_database
/etc/init.d/mysql start
my_project
移动到my_project_bak
,然后创建了一个名为my_project
的新空数据库。当新的空数据库与my_project_bak
中的表同名时,我无法在其中创建表。 - Greguse mysql; update db set Db=newdbname where Db=olddbname
。 - Felipe Buccioni首先备份名为HRMS的旧数据库,并编辑脚本文件,将单词HRMS替换为SUNHRM。完成此步骤后,将数据库文件导入到mysql中。