MySQLの列の名前を変更中にエラーが発生しました


434

テーブルの列の名前を変更するにはどうすればよいxyzですか?列は次のとおりです。

Manufacurerid, name, status, AI, PK, int

名前を変更したい manufacturerid

PHPMyAdminパネルを使用してみましたが、次のエラーが発生します。

MySQL said: Documentation
#1025 - Error on rename of '.\shopping\#sql-c98_26' to '.\shopping\tblmanufacturer' (errno: 150)

5
外部キー参照が含まれているテーブルを変更しようとしています。
mellowsoon

回答:


747

ローンレンジャーは非常に近い...実際、名前を変更した列のデータ型も指定する必要があります。例えば:

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

覚えておいてください:

  • INTを任意の列データ型に置き換えます(必須)
  • チルダ/バックティック( `)はオプションです

12
私は列に回答のエラーを取得するための外部キーが含まれていると思うので、外部キーを削除し、テーブルを変更し、外部キーを追加する必要があります(最初にバックアップすることをお勧めします)、右クリックで名前を変更するだけで変更できますテーブルの上-テーブルの変更
Chris Sim

7
このソリューションでは、null可能性、デフォルト値など、他のすべての列定義が失われることに注意してください(stackoverflow.com/questions/8553130/…を参照)。
Dejan 2015

つまり、基本的にはMODIFY column <TYPE>(列を再定義するため)ではなくCHANGE column new_column <TYPE>
mwfearnley、2015年

SHOW CREATE TABLE table_name現在の列の定義を把握するのに役立ちます
Mr. Deathless

@Dejanありがとう、これは本当に面倒です、なぜ他の修飾子を指定できないときに型を必要とするのですか?タイプ+修飾子が必要か、まったく必要ありません。
JMac 2016

43

標準のMysql名前変更ステートメントは次のとおりです。

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

この例では:

ALTER TABLE xyz CHANGE manufacurerid manufacturerid datatype(length)

リファレンス: MYSQL 5.1 ALTER TABLE構文


40

MYSQLの場合:

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

ORACLEの場合:

ALTER TABLE `table_name` RENAME COLUMN `old_name` TO `new_name`;

3
"MySQLの列名に使用する場合は機能しません。代わりに何も使用しないか、 `を使用します。
Alexis No

13

編集

以下を使用してフィールドの名前を変更できます。

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT

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


1
#1064-SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、行 ''の近くで ''の近くで使用する正しい構文を確認してください
Bharanikumar

17
これは便利ですが、引用したドキュメントには当てはまりません。「CHANGEまたはMODIFYを使用する場合、column_definitionには、データ型と、新しい列に適用する必要があるすべての属性を含める必要があります [...]元の定義に存在する属性しかし、新しい定義に指定されていない場合は繰り越されません。 "
artfulrobot

「ALTER TABLE xyz CHANGE manufacurerid manufacturerid datatype(length)」である必要があります
Chris Sim

7

コマンドを変更する正しい構文は次のとおりであるため、構文の問題があります ALTER TABLE tablename CHANGE OldColumnName NewColunmName DATATYPE;


2

MySQL 5.xでは、以下を使用できます。

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name DATATYPE NULL DEFAULT NULL;


0

ALTER TABLE CHANGE;

例:

ALTER TABLE global_user CHANGE deviceToken deviceId VARCHAR(255) ;

-5

構文

table_nameの変更列の古い列名新しい列名に変更ます。

例:

テーブルライブラリの列のコスト価格に変更します。


2
mysqlでは、RENAMEは列ではなくテーブルの名前を変更するために使用され、列の名前を変更するにはCHANGEを使用します。
ジャシン

質問はMySQLに対するものです-これはMySQLでは有効な構文ではありません。
tjbp 2016

他の人が指摘しているように、有効なMySQL構文を使用してください。
fool4jesus

無効なmysql構文があります。
Hasib Kamal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.