2013-07-05 14 views
5

Ho un database MySQL in cui i nomi degli indici sono condivisi tra le tabelle. Che va bene in MySQL, perché i nomi degli indici devono essere unici all'interno di una tabella e non all'interno di un database. Ma devo esportare questo database in un sistema che richiede che il nome dell'indice sia globalmente unico.Come posso rinominare tutti gli indici in MySQL

C'è qualche comando o script che posso eseguire per assegnare nomi univoci agli indici? Non mi interessa se sono generati casualmente.

+0

Non c'è, ma è possibile scrivere script personalizzato per questo. Una nota: non c'è modo di rinominare l'indice in mysql (precedente a 5.7: http://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html), solo drop + create – zerkms

risposta

0

MySQL non supporta la sintassi in ALTER TABLE per rinominare un indice (o chiave, che è un sinonimo).

È possibile ALTER TABLE DROP KEY e ALTER TABLE ADD KEY.

Non è disponibile il comandoin MySQL. È possibile solo DROP INDEX e quindi CREATE INDEX con il nuovo nome.

1

Non esiste un comando di indice o ALTER su MySQL. È necessario DROP l'indice o CREATE uno nuovo.

2

A partire dall'ultima versione di MySQL, non è possibile rinominare gli indici. La tua unica opzione sarebbe a DROP l'indice quindi CREATE uno nuovo o solo CREATE uno nuovo.

0

penso che valga la pena evidenziare che cosa @zerkms accennato in un commento di cui sopra - si possibile rinominare un indice (dal MySQL 5.7):

alter table mytable RENAME INDEX old_index_name TO new_index_name 
Problemi correlati