一次數據庫varchar字段長度設置問題引發的異常

先上圖

--- Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'activity_id' at row 1; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   

圖中的異常很明顯, activity_id字段的長度不夠用了, 實際插入的數據長度超出activity_id字段的預設值.

查看數據庫表activity_id字段的設置: varchar(50), 在設置這個值的時候, 我誤以爲varchar類型的字段即使設置了長度, 在入庫時如果實際數據長度超過了最大值, mysql會自動給我擴容(或者截斷數據入庫), 結果沒有, 直接報錯了.

注意⚠️

  • varchar(M)可以保存可變長度的字符串. 其中M代表該數據類型所允許保存的字符串的最大長度,只要長度小於該最大值的字符串都可以被保存在該數據類型中, 而當插入的數據長度超出長度時, 有以下兩種情況:
  1. 在MySQL處於嚴格模式下, 超過了長度就會報錯.
  2. 非嚴格模式下, 插入值會被截斷爲合適的長度後入庫

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章