2010-04-24 5 views

Antwort

9

es ist nicht anders als jede andere Spalte zu verändern -

ALTER TABLE `pkey` CHANGE `keyfield` `keyfield2` INT(11) NOT NULL AUTO_INCREMENT 

dies ändert die Spalte keyfield in Tabelle pkey werden keyfield2 genannt - Sie haben die Definition später zu liefern, wie üblich.

+12

Diese Lösung verursacht den Fehler 150. –

+4

Dies funktioniert, wenn keine Fremdschlüssel vorhanden sind. Eine andere Antwort schlägt vor, Dumping/Wiederherstellung der gesamten Datenbank, die funktioniert, aber nur die Fremdschlüssel/Indexe löschen/neu erstellen für mich arbeitete. – penfold

+0

stimme mit @Pavel Rodionov überein, es gibt den folgenden Fehler aus: [HY000] [1025] Fehler beim Umbenennen von xxx in yyy (errno: 150) –

1

Wenn Sie mit InnoDB arbeiten, dann denke ich, dass Sie Primärschlüssel nicht umbenennen können, zumindest können Sie nicht, wenn sie von Fremdschlüsseln referenziert werden. Sie müssen die Datenbank sichern, die Spalten und referenzierenden Schlüssel in der Speicherabbilddatei umbenennen und dann die Datenbank neu laden.

6

Möglicherweise haben Sie eine Fremdschlüsseleinschränkung an Ort und Stelle. Sie können diese durch SET foreign_key_constraints=0 deaktivieren, aber Sie müssen daran denken, die Datenbank danach zu aktualisieren.

+0

Wie ändere ich diesen Wert? Ich ändere nach Wert 1 nach? –

+0

@RafaelGomesFrancisco was meinst du? – Alex

3

Mögliche eine schlechte Praxis arbeiten herum. Aber Sie könnten Ihre gesamte Datenbank in eine SQL-Textdatei exportieren. Suchen und ersetzen Sie die PK, die Sie umbenennen möchten, und stellen Sie die Datenbank anschließend über SQL zurück.

3

Lassen Sie den PRIMARY KEY-Teil der alter-Anweisung weg. Der Primärschlüssel wird automatisch aktualisiert.

+0

Diese Antwort funktioniert, wenn Sie unerwartete Fehler erhalten. Groß! –

0

Wenn andere Tabellen einen Fremdschlüssel in Ihrer Tabelle haben, können Sie die Spalte nicht direkt umbenennen, indem Sie alter table verwenden. Der folgende Fehler wird ausgegeben: [HY000] [1025] Fehler beim Umbenennen von xxx in yyy (errno: 150) Sie müssen:

  • Drop Fremdschlüssel von anderen Tabellen auf den Primärschlüssel Sie zeigt
  • umbenennen der Primärschlüssel
  • fügen Sie die fremden Spalte zu anderen Tabellen
umbenennen möchten

Beim Umbenennen einer Tabelle in Intellij generiert es Sie den Code, den Sie löschen und den Fremdschlüssel hinzufügen.

Verwandte Themen