作一個積極的人前端
編碼、改bug、提高本身java
我有一個樂園,面向編程,春暖花開!mysql
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或者打印(查看)日誌的方式打印出須要更新的數據。
三、經過打印的數據和數據庫字段值進行比對。看一下是哪一個字段出現的問題。
根據實際業務進行修改,若是實際業務的確須要保存那麼長的數據,則修改字段長度。 不然對數據進行檢驗,不容許用戶填寫這麼長的內容。
一、若是發現這個問題,看一下是否是以前設計表的時候,字段長度沒有考慮好,長度不符合實際業務需求。
二、若是是長度設計合理,那在編寫代碼的時候,必定要對用戶輸入的內容作檢驗(前端+後臺),永遠不要相信用戶的輸入內容!!!
謝謝你的閱讀,若是您以爲這篇博文對你有幫助,請點贊或者喜歡,讓更多的人看到!祝你天天開心愉快!
無論作什麼,只要堅持下去就會看到不同!在路上,不卑不亢!
博客首頁 : https://aflyun.blog.csdn.net/
願你我在人生的路上能都變成最好的本身,可以成爲一個獨擋一面的人
© 天天都在變得更好的阿飛雲