問題描述
用Spring Boot 的save方法,往數據庫的表 topic里保存一條數據,但報錯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
矛盾點
controller 里面經過注釋后只剩一句話topicRepository.save(topic);
檢查前端和后端,沒有發現問題,注解的使用也正確,但不知道為什么會發生這個問題?
問題解決
- 在前端發請求之前打印發現可以打印出要傳遞的值,在controller中save之前打印也是可以的,加上錯誤的提示,所以問題斷定是出在了save 這一句上
- save的用法也是沒有問題的 ,google 搜索錯誤,網上的答案是說SQL語句出了錯,但我使用的是SpringBoot,沒有手動寫SQL語句,那么問題是哪了?
- 在網上看見了保留字一說,難道是我的表中有保留字。仔細檢查表中的數據段,最有可能的就是"order"這個字段。搜索了一下,果然order是mysql 的保留字。
- 將order 改為orderNumber 問題解決
反思
- 設計時對數據庫的保留字不熟悉,使用保留字作為列名
- 對數據庫的常見錯誤不熟悉,看見這樣的錯誤沒有反應過來可能是什么樣的錯誤
action
- 網上查找資料熟悉下mysql 的保留字
- 了解mysql 使用的常見誤區