在MySQL手册的MySQL涵盖这一点。
通常,我只是转储数据库,然后使用新名称重新导入它。对于大型数据库,这不是一个选择。显然RENAME {DATABASE | SCHEMA} db_name TO new_db_name;
做不好的事情,仅存在于少数几个版本中,并且总体而言是个坏主意。
这需要与InnoDB一起使用,后者存储的内容与MyISAM完全不同。
对于 InnoDB ,以下方法似乎有效:创建新的空数据库,然后将每个表依次重命名为新数据库:
RENAME TABLE old_db.table TO new_db.table;
之后,您将需要调整权限。
要在shell中编写脚本,可以使用以下任一方法:
mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \
do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done
要么
for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;
笔记:
-p
和密码之间没有空格。如果您的数据库没有密码,请删除该-u username -ppassword
部分。Trigger in wrong schema
错误)。如果是这种情况,请使用传统方式克隆数据库,然后删除旧数据库:mysqldump old_db | mysql new_db
mysqldump -R old_db | mysql new_db
问题内容: 这个问题已经在这里有了答案 : 如何快速重命名MySQL数据库(更改架构名称)? (47个答案) 5年前关闭。 我创建了一个名为的数据库。现在,我需要将数据库名称更改为。但是,它在MySQL工作台中被禁用。我可以在Linux服务器本身上执行此操作吗? 问题答案: 我认为您无法做到这一点。我认为您需要转储该数据库,创建新命名的数据库,然后导入转储。 如果这是一个实时系统,则需要将其删除。
问题内容: 我正在尝试更改图像的存储库名称: 因此,我想将名称更改为类似: 我怎样才能做到这一点? 问题答案: 要么 标签只是完整图像名称()的可读别名。 因此,您可以根据需要使它们与同一图像关联。如果您不喜欢旧名称,则可以在重新命名后将其删除: 那只会删除。由于具有其他名称,因此不会删除实际图像。
我怎么能这么做?
我使用嵌入式数据库H2具有默认模式PUBLIC。我想要一个模式XYZ,而不是默认的H2模式。我怎么能改变它使用液体基地。我试图创建第一个变更集来创建模式XYZ,并将模式名称属性添加到所有DDL语句中,以使用模式名称。但是数据库转换日志和数据库转换锁是在PUBLIC模式中创建的。如何为这些表指定模式? 提前感谢您的回复。
问题内容: 我正在寻找一种在MySQL中为数据库命名的方法。原因是能够重命名实时生产数据库而不会导致系统停机。我想可以将数据库别名为新名称,随意更改和部署连接到数据库的代码,并最终删除旧别名。 如果有更好的方法可以做到这一点,请告诉我。 问题答案: https://dev.mysql.com/doc/refman/5.7/en/symbolic-links-to- databases.html 说
我很难更改列名。我知道我的语法是正确的,但我收到了一条错误消息。 我使用的语法是: 我一直收到这个错误消息,错误1064(42000):您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第2行“COLUMN CustomerID to CollaboratorID”附近使用的正确语法 请帮忙。