【发布时间】:2010-10-15 22:10:08
【问题描述】:
我正在使用MySQL 5.0.
我创建了一个名为accounts的数据库,但现在我想将数据库名称更改为FinanceAccounts。
如何更改MySQL 5.0中的数据库名称?
【问题讨论】:
标签: mysql
我正在使用MySQL 5.0.
我创建了一个名为accounts的数据库,但现在我想将数据库名称更改为FinanceAccounts。
如何更改MySQL 5.0中的数据库名称?
【问题讨论】:
标签: mysql
我认为只有一种方法(除了重命名 MySQL 数据目录中的目录,这对于 InnoDB 表来说会失败):
创建新数据库:
mysql> CREATE DATABASE new_database;
创建旧数据库的转储:
mysqldump -u "your_username" -p --lock-tables old_database > old_database_dump.sql
将转储数据导入新数据库:
mysql -u "your username" -p new_database < old_database_dump.sql
删除旧数据库:
mysql> DROP DATABASE old_database;
请记住,您对旧数据库的权限也需要删除。请参阅此处了解更多信息: Revoke all privileges for all users on a MySQL DB
从 MySQL 5.1.7 到 MySQL 5.1.22 有一个RENAME {DATABASE | SCHEMA} db_name TO new_db_name; 命令,但是这个命令在 MySQL 5.1.23 中因为太危险而被删除了。
【讨论】:
最好的方法可能是将数据库中的每个表重命名为新名称。例如:
更新:这里有两个步骤
创建一个新的空白数据库,如您所说的“新帐户”
创建数据库新帐户;
逐个迁移每个表
将表accounts.tablename重命名为newaccounts.tablename;
看 http://dev.mysql.com/doc/refman/5.0/en/rename-table.html 了解更多信息。
【讨论】:
RENAME TABLE current_db.tbl_name TO other_db.tbl_name; 专为重命名的数据库授予的任何特权表或视图不会迁移到新名称。它们必须手动更改。
MySQL 在这方面有点糟糕。唯一可靠的解决方案是使用 phpMyAdmin。
登录 > 点击 Scheme > 点击“操作” > 找到“Rename database to:” > 写 NewName > 点击“Go”。
就这么简单。所有权限都被继承。
【讨论】:
这里,我将 mydb 数据库重命名为 ecommerce,你按照这个步骤操作,但是使用 phpmyadmin 很简单
CREATE DATABASE `ecommerce` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
RENAME TABLE `mydb`.`Articles` TO `ecommerce`.`Articles` ;
RENAME TABLE `mydb`.`Categories` TO `ecommerce`.`Categories` ;
RENAME TABLE `mydb`.`Utilisateurs` TO `ecommerce`.`Utilisateurs` ;
ALTER TABLE `Articles` ADD CONSTRAINT fk_Articles_Categories FOREIGN KEY ( Categorie_id ) REFERENCES Categories( id ) ON DELETE NO ACTION ON UPDATE NO ACTION ;
DROP DATABASE `mydb` ;
【讨论】: