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’);
バッククオートで囲ってあげると使えるようです。