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