Come rinominare una colonna chiave primaria in MySQL?Come rinominare una colonna chiave primaria in MySQL?
risposta
Non è diverso rispetto alterare qualsiasi altra colonna -
ALTER TABLE `pkey` CHANGE `keyfield` `keyfield2` INT(11) NOT NULL AUTO_INCREMENT
questo cambia la colonna keyfield
nella tabella pkey
di essere chiamato keyfield2
- si deve fornire la definizione poi, come al solito.
Se si lavora con InnoDB, penso che non sia possibile rinominare le chiavi primarie, almeno non si può farlo se si fa riferimento a chiavi esterne. È necessario scaricare il database, rinominare le colonne e le chiavi di riferimento nel file di dettagli, quindi ricaricare il database.
Forse si dispone di un vincolo di chiave esterna. È possibile disabilitare quelli da SET foreign_key_constraints=0
ma è necessario ricordare di aggiornare il database in seguito.
Come cambio questo valore? Io cambio per il valore 1 dopo? –
@RafaelGomesFrancisco cosa intendi? – Alex
Possibile esercizio di cattive pratiche. Ma potresti esportare l'intero db in un file di testo sql. Trova e sostituisci il PK che vuoi rinominare, quindi ripristina il database su sql.
Lasciare la parte PRIMARY KEY dell'alterazione. La chiave primaria verrà aggiornata automaticamente.
Questa risposta fa il trucco quando ricevi errori imprevisti. Grande! –
Se altre tabelle hanno una chiave esterna sul proprio tavolo, non è possibile rinominare direttamente la colonna utilizzando alter table, verrà visualizzato il seguente errore: [HY000] [1025] Errore durante la rinomina di xxx in yyy (errno: 150) È necessario:
- goccia chiavi esterne da parte degli altri tavoli che puntano alla chiave primaria che si desidera rinominare
- rinominare la chiave primaria
- aggiungere la colonna straniero ad altri tavoli
Quando si rinomina una tabella in Intellij, si genera il codice do drop e si aggiunge la chiave esterna.
Questa soluzione causerà l'errore 150. –
Questo funziona quando non ci sono chiavi esterne. Un'altra risposta suggerisce il dumping/ripristino dell'intero database, che funzionerà, ma che semplicemente ha fatto cadere/ricreare gli indici/le chiavi esterne ha funzionato per me. – penfold
d'accordo con @Pavel Rodionov, genera il seguente errore: [HY000] [1025] Errore nel cambio di nome xxx in yyy (errno: 150) –