如何在MySQL中重命名所有索引

5
我有一个 MySQL 数据库,其中索引的名称在表之间是共享的。这在 MySQL 中很好,因为索引名称只需在表内唯一,而不需要在数据库内唯一。但我必须将此数据库导出到一个要求索引名称在全局唯一的系统中。
是否有某个命令或脚本可以运行以分配唯一名称给索引?我不关心它们是否随机生成。

没有现成的方法,但你可以编写自定义脚本来实现。需要注意的是,在 MySQL 中无法重命名索引(在 5.7 版本之前:http://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html),只能通过删除和创建来实现。 - zerkms
4个回答

2

截至最新版本的MySQL,没有重命名索引的方法。您唯一的选择是DROP索引,然后CREATE一个新的索引或者只是CREATE一个新的索引。


2
我认为值得强调的是@zerkms在上面的评论中所暗示的——自MySQL 5.7以来,您可以重命名索引:
alter table mytable RENAME INDEX old_index_name TO new_index_name

当我在mySQL 5.7.17中尝试这个时,我看到了一个语法错误:意外的INDEX_SYM。 - wheeleruniverse

1

MySQL 没有 RENAMEALTER 索引命令。您需要使用 DROP 命令删除索引或者使用 CREATE 命令创建一个新的索引。


0

MySQL在ALTER TABLE中不支持重命名索引(或键,这是其同义词)的语法。

您可以使用ALTER TABLE DROP KEYALTER TABLE ADD KEY进行操作。

MySQL中没有ALTER INDEX命令。您只能DROP INDEX,然后使用新名称CREATE INDEX


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接