2010-04-24 26 views

risposta

9

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.

+12

Questa soluzione causerà l'errore 150. –

+4

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

+0

d'accordo con @Pavel Rodionov, genera il seguente errore: [HY000] [1025] Errore nel cambio di nome xxx in yyy (errno: 150) –

1

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.

6

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.

+0

Come cambio questo valore? Io cambio per il valore 1 dopo? –

+0

@RafaelGomesFrancisco cosa intendi? – Alex

3

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.

3

Lasciare la parte PRIMARY KEY dell'alterazione. La chiave primaria verrà aggiornata automaticamente.

+0

Questa risposta fa il trucco quando ricevi errori imprevisti. Grande! –

0

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.

Problemi correlati