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)

5
Sie versuchen, eine Tabelle mit einer Fremdschlüsselreferenz zu ändern.
Mellowsoon

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

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


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`;

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


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;


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;

1

Umbenennen einer Spalte in MySQL:

ALTER TABLE mytable CHANGE current_column_name new_column_name DATATYPE;

0

ALTER TABLE CHANGE;

Beispiel:

ALTER TABLE global_user CHANGE deviceToken deviceId VARCHAR(255) ;

-5

SYNTAX

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

Beispiel:

alte table Bibliothek Umbenennungs Spalt Kosten zu Preis ;


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.