Mysqlの予約語とその回避 ITかあさん

ITかあさん

Mysqlの予約語とその回避

今日は朝から超脱力。何度やってもMysqlのSQLがエラーが返ってきます。

INSERT INTO test_table(name,age,title,info_text,release) values (‘名前’,25,’タイトル’,’テキスト’,’2010-11-05′)

これを見て、あなたはパッとこのSQLの何がいけないか理解できますか?フィールドの型の問題とかバージョンの問題ではありません。もっと根本的なことが間違っていました。

正解は・・・

INSERT INTO test_table(name,age,title,info_text,release) values (‘名前’,25,’タイトル’,’テキスト’,’2010-11-05′)

こいつです。releaseはMysqlの予約語だったんです。フィールド名にこの予約語を使うと、フィールド名自体は設定できても、INSERTを実行するときにエラーが出てINSERTできません。

Mysqlの予約語

私はものの見事にMysqlの予約語にはまってしまいました。
以下予約言語一覧です。フィールド名をつけるときは以下の予約名とかぶっていないかよく確認したほうがよさそうです。

Mysql予約後一覧
http://dev.mysql.com/doc/refman/4.1/ja/reserved-words.html

あれ?でもreleaseは予約語としてかかれていない。でもGoogleで
Mysql release 予約語
と検索したら同じような方がたくさんいました。

Mysqlの予約語を使いたいときの回避方法

ここまで書くと、もう予約語自体は使わないほうがよさそうですが、調べてみると、

INSERT INTO table名 (`release`) VALUSE(’hoge’);

バッククオートで囲ってあげると使えるようです。

売り切れじまいメデタ屋のブログより

初夏のJavaScript祭 in サーキュレーションビル ForPro