不支持,因为 MySQL 原生也是不支持修改数据库名称的。
若必须要变更,您可以参考以下方案转移库表:
方法一:通过 mysqldump 导出数据,再新建一个库导入。该方法相对比较保险,但数据量较大时会比较耗时。
方法二:通过 rename 数据库里面的表,SQL 操作详情请参见 MySQL 文档。该方法相比 mysqldump 速度较快,但风险较高,例如可能会导致视图不可用,因为视图名称虽然发生了变更,但创建语句中引用的表名还是原表名。
# 创建新的数据库 CREATE DATABASE new_db_name; # 对所有的表进行重命名 RENAME TABLE db_name.table1 TO new_db_name.table1; # 删除原来的数据库 DROP DATABASE db_name;
若表数量很多,也可通过以下脚本批量修改。
mysql -uroot -p -e "select concat('rename table db.',table_name,' to new_db.',table_name,';') from information_schema.TABLES where TABLE_SCHEMA='db';" > rename_mysql_name.sql # 批量修改 mysql -uroot -p < rename_mysql_name.sql
检查在手工执行 DDL 时,数据库是否存在正在执行的 Online DDL 工单,Online DDL 的执行结果可能会覆盖手工执行的 DDL。关于工单的更多操作详情,请参见工单管理。