SQLException: #22001你知道這個錯誤碼嗎

作一個積極的人前端

編碼、改bug、提高本身java

我有一個樂園,面向編程,春暖花開!mysql

java.sql.SQLException: #22001

java.sql.SQLException: #22001
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2334)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2262)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:22

報錯,沒見過,一天兩個sql爆出了這個錯誤! 而後發現直接去搜 java.sql.SQLException: #22001 居然沒有 能匹配的帖子。本身整理一篇,方便後續回顧,也但願幫助到須要的夥伴!sql

結論

-- 表字段長度 `desc` varchar(255) DEFAULT NULL COMMENT '描述' 
--長度884 職場上沒有誰是永遠靠得住的,正如西方名言「沒有永遠的朋友,也沒有永遠的敵人,只有永遠的利益」。咱們要想讓別人靠得住,首先是本身站得住。若是本身站不住,別人必定靠不住。你本身不懂得如何保護本身,別人也很差多管閒事,天然幫不了你。 在職場什麼最重要,讓你成爲一個璀璨的星星,答案就是:核心競爭力。若是說你技術好,比你技術好的多的是,若是說你經驗豐富,比你豐富的人多的去。因此咱們的核心競爭力是什麼呢?記得個人上司給我說過這樣一句話:」若是你的理念獨一無二和略勝一籌的話,再加上稍稍的技術那就是你在別人面前能夠競爭的資本「。咱們的亮點也就在這。學會一種理念,超越別人思惟的理念,你就是耀眼的金子。 

某些字段長度大於表字段的長度,致使執行sql的時候,報錯數據庫

我遇到的問題是由於是老的項目,前端對輸入的內容沒有作任何校驗,後臺也沒有相應的校驗,致使不符合業務格式的數據可以經過代碼層層邏輯,最終撞到數據庫的南牆,頭破了,"爆出"錯誤!編程

編碼

細心的夥伴可能已經看出,上面這個字段desc是mysql的一個關鍵字。建議不要使用!spa

阿里巴巴明確代碼規範手冊,Mysql數據庫 >> 建表規約:.net

四、【強制】禁用保留字,如 desc 、 range 、 match 、 delayed 等,請參考 MySQL 官方保留字debug

問題排查

一、首先經過報錯信息找到具體出現錯誤的代碼行,我這裏出現錯誤是由於有一行更新數據 的sql 報出的錯。

二、知道具體的行數後,經過debug或者打印(查看)日誌的方式打印出須要更新的數據。

三、經過打印的數據和數據庫字段值進行比對。看一下是哪一個字段出現的問題。

解決

根據實際業務進行修改,若是實際業務的確須要保存那麼長的數據,則修改字段長度。 不然對數據進行檢驗,不容許用戶填寫這麼長的內容。

本身的一點小思考

一、若是發現這個問題,看一下是否是以前設計表的時候,字段長度沒有考慮好,長度不符合實際業務需求。

二、若是是長度設計合理,那在編寫代碼的時候,必定要對用戶輸入的內容作檢驗(前端+後臺),永遠不要相信用戶的輸入內容!!!

 

 


謝謝你的閱讀,若是您以爲這篇博文對你有幫助,請點贊或者喜歡,讓更多的人看到!祝你天天開心愉快!


 

無論作什麼,只要堅持下去就會看到不同!在路上,不卑不亢!

 

願你我在人生的路上能都變成最好的本身,可以成爲一個獨擋一面的人

© 天天都在變得更好的阿飛雲

相關文章
相關標籤/搜索