「You have an error in your SQL syntax; check the manual …」と表示されるとき

長いエラーメッセージですが、ほとんどの原因はSQLの入力ミスです。

#1064 – 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 ‘SELEC * FROM `table1` WHERE 1’ at line 1

逆に言えば単純にSQLの入力を1文字間違えただけでも、この長いエラーメッセージが表示されます。

どこを間違えたのか、あまりエラーメッセージは参考にならない場合があるので、エラーメッセージの解釈に時間をかける必要はありません。

そもそも、入力ミスと判断されるのはSQLのキーワードです。たとえば、SELECTをSELECTOのように入力したり、

SELECT * FROM table1 WHERE id=1

と入力すべきところ、table1とWHEREの間の半角空白を入れ忘れて次のように入力すると、エラーになります。

SELECT * FROM table1WHERE id=1

エラーメッセージを深追いしないこと

エラーメッセージを深追いしないこと

ここで、エラーメッセージを手がかりにしようと思っても「=1 LIMIT 0, 30」の近くにというヒントが気になってエラーの原因特定が難しくなる場合があります。

「error in your SQL syntax」から入力ミスだと判断して、細かいエラーメッセージを深追いせず、SQLキーワードの入力を間違えてないか、半角スペースが抜けていないか、もう一度確認してみてください。

主なSQLキーワードをまとめておきます。スペルが間違っていないか確認しましょう。

  • SELECT … FROM … — データの取得
  • INSERT INTO … VALUES — データの追加
  • UPDATE … SET — データの変更
  • DELETE FROM — データの削除
  • WHERE — データの絞込み
  • LIKE — データのあいまい検索
  • LIMIT — データの取得位置
  • JOIN — テーブルの結合
  • GROUP BY — データのグループ化
  • ORDER BY id DESC — データの並べ替え
  • PRIMARY KEY — 主キー
  • CREATE TABLE — テーブルの作成

特にPHPスクリプトなどで動的にSQLを組み立てている場合、重要な所に半角スペースが抜けていることに気づかないこともあります。どうみても文法的に間違ってなさそうなときは、SQLキーワードの周りに半角スペースが入っているか確認してください。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする