MySQL

orderという名前のカラムをDROPできなかった時の解決法

More than 1 year has passed since last update.

つまづいたこと

あるテーブルで順番を表す「order」という名前のカラムを消そうとして、以下のコマンドを打ったらエラーになった。

ALTER TABLE table_name DROP order;
mysql> ALTER TABLE table_name DROP order;
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 to use near 'order' at line 1

解決方法

以下のように、カラム名をバッククォートで囲む。

ALTER TABLE table_name DROP `order`;

解決に向けて行ったこと

You have an error in your SQL syntax...のエラーは括弧が足りないとかそういう時にも出てきたので、ぱっと見では原因がわからなかった。
ただ'order' at line 1とあったのでそれがキーになっているかと予想。

ERROR 1064 (42000)でググった。
そうすると、1件目にヒットしたサイトでorderが予約語のためカラム名に設定できないことがわかる。
予約語を避けるべしと記載してあった。

だが、そういうカラム名が実際についてしまっているので、それでは解決にならない。

さらに複数の検索結果を見て回ったところ、バッククォートで囲むと実行できるとの記載があった。

おそらく、カラムをADDする時も``をつけていたんでしょう。

あとがき

初めてのQiita記事です。
とにかく発信することが大事というのをエンジニア人生4年余りで学んだので、
些細なことですが投稿してみました。
生温かく見守っていただき、間違いがあれば指摘していただければ幸いです。