Help us understand the problem. What is going on with this article?

MySQLの予約語に注意!

More than 1 year has passed since last update.

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の公式ドキュメントにも予約語の一覧があるので興味のある方はそちらを参照してみてください。

https://dev.mysql.com/doc/refman/8.0/en/keywords.html

3,おわりに

今回のような事態に陥らないために予約語になりそうな言葉の使用を避けたり、どうしても予約語になりそうな言葉を使いたいのであれば、2語以上からなるカラム名などでカラム名を登録することが大切だと感じました。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away