MySQLでoptionカラムを設定しようとしたら怒られた時の対処法

技術メモ

今回、MySQLで以下のようにテーブルを作成しようとしたところ、エラーが発生しました。

CREATE TABLE Test (price INT, option INT);
// ERROR 1064 (42000) at line 41: 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 'option INT)' at line 1

‘option INT)’ らへんに文法誤りがあるよー、と言われています。

調べてみたところ実はoptionというのは予約語で、SELECTDELETEなどと同様にMySQL内で意味を持つ単語なんですね。なので基本的にテーブル名やカラム名での使用が許可されていません。

予約語をテーブル名やカラム名で使用するには、以下のようにバッククォート(` `)で囲ってあげる必要があります。

CREATE TABLE Test (price INT, `option` INT);
// Query OK, 0 rows affected (0.01 sec)

あとがき

以下の予約語に関しては、多くの人が使用していたためバッククォートなしでも使えるようになったみたいです。

  • ACTION
  • BIT
  • DATE
  • ENUM
  • NO
  • TEXT
  • TIME
  • TIMESTAMP

引用:MySQL 5.6 リファレンスマニュアル / 言語構造 / 予約語

コメント

タイトルとURLをコピーしました