6月7日のエラー解決
springの解体新書の3章のデータベースから値を取得してみるでのエラー解決
に対しての気づき
エラー内容
Syntax error in SQL statement "SELECTEMPLOYEE_ID[*], EMPLOYEE_NAME, AGE FROM EMPLOYEE WHERE EMPLOYEE_ID=?"; expected "SET, SAVEPOINT, SCRIPT, SHUTDOWN, SHOW"; SQL statement:
SELECTemployee_id, employee_name, age FROM employee WHERE employee_id=? [42001-200]] with root cause
Syntax error in SQL statement "SELECTEMPLOYEE_ID[*], EMPLOYEE_NAME, AGE FROM EMPLOYEE WHERE EMPLOYEE_ID=?"; expected "SET, SAVEPOINT, SCRIPT, SHUTDOWN, SHOW"; SQL statement:
SELECTemployee_id, employee_name, age FROM employee WHERE employee_id=? [42001-200]
「7SQLステートメントに文法エラーがあります ”SELECTEMPLOYEE_ID
ここで、自分がしたことは
・スペルミス、空白ミスとかがないか確かめる
・エラー文をコピペしてgoogleで調べる
・twitterで助けを求める(森さん大川氏ありがとうございやす)
これでも、なかなか解決できなくて
ここで、ようやくエラー文をちゃんと読んでみることに目を向けます
それでエラーの原因が分かりました
で、エラーの原因はエラー文に書いてある通り
SQLの文法エラーでして
String query = "SELECT"
+ "employee_id,"
+ "employee_name,"
+ "age"
+ "FROM employee"
+ "WHERE employee_id=?";
この文がエラーを生み出してました。(エラー文に書いてあります)
何がダメだったかというと
空白が無い事でした!
正しいのはこれ
String query = "SELECT"
+ " employee_id,"
+ " employee_name,"
+ " age"
+ " FROM employee"
+ " WHERE employee_id=?";
正直、エラー文を読んでどこにエラーの原因もあるか分かっていて
SQLの文法になにかしらの間違いがあるんだろうなーとは
思っていたけど全然気づけずにすごい時間かかりました
で、なんで空白がないといけないのかと気づいたのかというと
一度ノートに、この間違っている文を文字列を連結して書いてみると
SELECTemployee_id,employee_name,ageFROM employeeWHERE employee_id=?
となりました(エラー文にまんま書いてありました)
これで
あ、SQLの学習しとるときSELECT文書くときに
SELECT文と指定列の間に空白いれてたわ!!
てな感じで、これにも空白入れないかんのかと思い
空白入れてみたらエラー解決できました!
で、なにに対して気づきがあったのかというと
一つは、エラー文をよく読むという事
エラー文が英語と日本語となんかいろいろとごっちゃになってて
あんまり読む気になれなかったけど、これを気に仲良くなれそうな気がします
で、2つ目は気づきというか前提知識をもってて良かったなと
spring解体新書する前にSQLを勉強していたので空白ないとアカンやん!てなったけど
この知識なかったらもっと時間かかってたのかなと
森さんから教えていただいたサンプルのコードを見て
空白のヒントをもらえたので、前提知識がなくともサンプルとかを見てエラーを解決することもできるだろうけど、きちんと理解した上での脳汁はえぐいですね
終わり