Connection is read-only. Queries leading to data modification are not allowed
題外話,很少在網上公開寫東西,不是沒有分享精神,只是害怕自己也是略懂會誤導其他人,所以每次解決完問題都是在印象筆記上記錄,只供自己方便查閱。上一次寫還是2016年的事情,轉眼已經到了2018年了,我也從iOS開發現在慢慢轉成java開發,要學習的東西真的很多,幸好有一顆喜歡編程的心,要不然真的不知道這幾年是怎麽過來的。
正文:
Connection is read-only. Queries leading to data modification are not allowed
我產生的原因:自己在mybatis中寫了一個插入的sql語句,對應的dao層service層也都寫了相應的刪除方法,但是controller在調用的時候,報錯。
這個錯誤其實已經很明顯,提示我修改不被允許,是只讀的。網上也都有答案,讓修改spring-context.xml配置文件,例如:
這裏面有寫到,必須要以配置的這些單詞開頭才行,例如可以叫insertUserInfo,但是不能叫saveUserInfo,因為並沒有save開頭的,其他開頭的單詞都是read-only=true
於是乎在我的工程中搜索類似字樣,卻發現並沒有這些配置,然而我又是剛接觸這些框架沒多久不太敢輕易添加這些標簽,所以問題持續了好久,猛然間發現某個service層中的方法上有個註解@Transactional(readOnly = false) 很明顯聲明事務的只讀性為false,於是在我自己寫的方法上也加了這麽行語句,問題得以解決,可能用一段時間這些框架後再回頭看這些文章會覺得自己很傻逼吧,但記錄出來,希望能對像我這樣的框架小白有點幫助。
附詳細代碼,最主要的是第一行聲明一下不是只讀,否則默認應該是只讀:
service
dao
mybatis
最後,用這麽大的篇幅寫了這麽一個小錯誤,只當為了激勵自己碼好自己的代碼。
Connection is read-only. Queries leading to data modification are not allowed