ITMySQL

ALTER TABLE RENAME COLUMN でエラーが発生する

こんなエラーが発生しています。

ERROR 1064 (42000): You have an error in your SQL syntax;
 check the manual that corresponds to your MySQL server version for the right syntax

このエラーは、MySQLのバージョンによる原因のようです。 ALTER TABLE RENAME COLUMNは、MySQL8.0から利用できる構文のようです。 自身のバージョンを知らない人は、確認してみてください。

mysql --version

対策

ALTER TABLE CHANGEを使用します。 ALTER TABLE RENAME COLUMNの場合は、カラム名だけの変更が可能でしたが、 ALTER TABLE CHANGEの場合は、カラム名の変更というより、カラムの再定義といった感じです。 そのため、制約等も再度書き直す必要があります。 以下は、ALTER TABLE CHANGEの例です。

ALTER TABLE テーブル名 CHANGE 旧カラム名 新カラム名 int(11) NOT NULL COMMENT 'コメント';

また、NOT NULL制約やコメントは必須ではないため、省略してもエラーにはなりませんが、 型の指定を省略すると、エラーになります。

なぜ間違えるのか

カラム名の変更(ALTER TABLE RENAME COLUMN)は、MySQLのバージョン8.0以降でないと使用できないようですが、 テーブル名の変更(ALTER TABLE RENAME)は使用できるため、間違えてしまう場合が多いのだと思います。 とてもややこしいですね…。