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