MySQLの予約語に注意!
1,はじめに
最近大学の部活の活動でnodejs, MySQLでモバイルアプリ向けのAPIサーバーのバックエンドを担当したのですが、その中のデータベース書き換え処理の実装で個人的にはハマりポイントとなったMySQLの予約語をカラム名で使用するとエラーが吐かれることについて書きたいと思います。
2,問題
MySQLにも予約語というものがあり、予約語はその環境上で特別な扱いをされる言葉であり、私たちはこの予約語を利用することは基本的にできません。私は「key」という名前のカラムを作ってしまったのですが、それがエラーの原因でした。カラム名など予約語とぶるとつぎのようなエラーが出ます。
ERROR 1064 (42000): You have an error in your SQL syntax ...
重要なのは、予約語とかぶる不正なカラム名でもテーブルを作成できてしまうが、そのテーブルにINSERTなどの操作をしようとするときにエラーが吐かれるということです。テーブル自体はできてしまっているため自分の作ったテーブルのカラム名が悪いなどとは思いもよりませんでした。以下に個人的に気を付けたほうが良いと思うMySQLの予約語を載せておきます。
- CODE
- KEY
- KEYS
- MATCH
- OPTION
- RELEASE
MySQLの公式ドキュメントにも予約語の一覧があるので興味のある方はそちらを参照してみてください。