概要
以下のようなSQLだとエラーになりました。
'DELETE FROM mysql57-dummy.sample WHERE...(略)'
エラーメッセージは以下の通り。
SQLエラー [1064] [42000]: 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 '-dummy.sample WHERE...
原因と解決方法
エラーは、データベース名にハイフンが入っていたため。
一部の文字列が正しくエスケープされていないためにエラーが発生しています。
ハイフンが入っているデータベース名の場合、バッククオートで囲んであげるとエラーが解決できます。
今まであまり気にしてなかったけど、そうだったんか...
クエリ文字列の組み立て部分を次のように変更すればOK。
'DELETE FROM `mysql57-dummy`.sample WHERE...'
これにより、データベース名とテーブル名が適切にエスケープされ、SQL文が正しく処理されるようになりました。