Fehler beim Umbenennen einer Spalte in MySQL

434

Wie benenne ich eine Spalte in einer Tabelle um xyz? Die Spalten sind:

Manufacurerid, name, status, AI, PK, int

Ich möchte umbenennen in manufacturerid

Ich habe versucht, das PHPMyAdmin-Panel zu verwenden, erhalte jedoch folgende Fehlermeldung:

MySQL said: Documentation
#1025 - Error on rename of '.\shopping\#sql-c98_26' to '.\shopping\tblmanufacturer' (errno: 150)
Bharanikumar
quelle
5
Sie versuchen, eine Tabelle mit einer Fremdschlüsselreferenz zu ändern.
Mellowsoon
2
Mögliches Duplikat des Umbenennens von Fremdschlüsselspalten in MySQL
OMG Ponies

Antworten:

747

Lone Ranger ist sehr nah ... Sie müssen auch den Datentyp der umbenannten Spalte angeben. Zum Beispiel:

ALTER TABLE `xyz` CHANGE `manufacurerid` `manufacturerid` INT;

Merken :

  • Ersetzen Sie INT durch einen beliebigen Spaltendatentyp (ERFORDERLICH).
  • Tilde / Backtick (`) ist optional
Matt Diamond
quelle
12
Ich denke, die Spalte enthält einen Fremdschlüssel, um den Fehler der Antwort zu erhalten. Sie müssen also den Fremdschlüssel löschen, die Tabelle ändern und den Fremdschlüssel hinzufügen (es ist besser, zuerst zu sichern), und Sie können ihn ändern, indem Sie den Namen nur mit der rechten Maustaste ändern auf dem Tisch - alter table
Chris Sim
7
Beachten Sie, dass Sie in dieser Lösung alle anderen Spaltendefinitionen wie Nullfähigkeit, Standardwert usw. verlieren (siehe: stackoverflow.com/questions/8553130/… ).
Dejan
Also im Grunde genommen, anstatt MODIFY column <TYPE>(um eine Spalte neu zu definieren) CHANGE column new_column <TYPE>?
mwfearnley
SHOW CREATE TABLE table_namekann Ihnen helfen, die aktuelle
Spaltendefinition
@Dejan danke und das ist wirklich ärgerlich, warum einen Typ benötigen, wenn Sie keine anderen Modifikatoren angeben können? Benötigen Sie entweder einen Typ + Modifikator oder benötigen Sie ihn überhaupt nicht.
JMac
43

Die Standardanweisung zum Umbenennen von MySQL lautet:

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name 
CHANGE [COLUMN] old_col_name new_col_name column_definition 
[FIRST|AFTER col_name]

für dieses Beispiel:

ALTER TABLE xyz CHANGE manufacurerid manufacturerid datatype(length)

Referenz: MYSQL 5.1 ALTER TABLE Syntax

dongpf
quelle
40

FÜR MYSQL:

ALTER TABLE `table_name` CHANGE `old_name` `new_name` VARCHAR(255) NOT NULL;

FÜR ORACLE:

ALTER TABLE `table_name` RENAME COLUMN `old_name` TO `new_name`;
mahbub_siddique
quelle
3
Es funktioniert nicht, wenn Sie "für die Spaltennamen für MySQL verwenden. Verwenden Sie stattdessen nichts oder `.
Alexis Nr.
13

BEARBEITEN

Sie können Felder umbenennen mit:

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

Einsamer Waldläufer
quelle
1
# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von '' in Zeile 1
Bharanikumar
17
Dies wäre nützlich, entspricht jedoch nicht der von Ihnen zitierten Dokumentation: "Wenn Sie CHANGE oder MODIFY verwenden, muss column_definition den Datentyp und alle Attribute enthalten, die für die neue Spalte gelten sollen. [...] Attribute, die in der ursprünglichen Definition vorhanden sind aber nicht für die neue Definition spezifiziert werden nicht übertragen. "
artfulrobot
es muss "ALTER TABLE xyz CHANGE manufacurerid Hersteller ID-Typ (Länge)" sein
Chris Sim
7

Es liegt ein Syntaxproblem vor, da die richtige Syntax zum Ändern des Befehls lautet ALTER TABLE tablename CHANGE OldColumnName NewColunmName DATATYPE;

Darshan
quelle
2

Mit MySQL 5.x können Sie Folgendes verwenden:

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name DATATYPE NULL DEFAULT NULL;
MIKE KIM
quelle
1

Umbenennen einer Spalte in MySQL:

ALTER TABLE mytable CHANGE current_column_name new_column_name DATATYPE;
Hasib Kamal
quelle
0

ALTER TABLE CHANGE;

Beispiel:

ALTER TABLE global_user CHANGE deviceToken deviceId VARCHAR(255) ;
Vaquar Khan
quelle
-5

SYNTAX

Tabelle ändern Tabellenname Spalte alten Spaltennamen in neuen Spaltennamen umbenennen ;

Beispiel:

alte table Bibliothek Umbenennungs Spalt Kosten zu Preis ;

Abinaya
quelle
2
In MySQL wird RENAME zum Umbenennen einer Tabelle und nicht einer Spalte verwendet. Um eine Spalte umzubenennen, verwenden Sie CHANGE.
Jathin
Die Frage ist für MySQL - dies ist keine gültige Syntax in MySQL.
tjbp
Wie andere bemerken, verwenden Sie bitte eine gültige MySQL-Syntax.
narr4jesus
Es gibt eine ungültige MySQL-Syntax.
Hasib Kamal