資料庫int欄位超限
今天碰到了一個問題,資料庫int欄位超限
錯誤:
我定義的是int(11)
然後存的數字是3999990394,發現存不進去,最開始以為是長度不夠,然後給改成了int(16)
,發現還是報錯。
錯誤提示:
### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column '欄位名' at row 1;
SQL []; Data truncation: Out of range value for column '欄位名' at row 1;
nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column '欄位名' at row 1
嘗試
其實以前我就對int(11)
中int後邊的11不是很明白,建立表的時候說的是長度,所以就理所當然的被我當做是數字的長度,但是我把長度改大之後還是報錯,所以應該還是我沒理解對。然後我再把int(11)
改成bigint(11)
可以儲存成功,然後把bigint(11)
改為bigint(1)
還是可以儲存成功。
原因
其實在資料庫中定義欄位型別的時候,int(x)
中的X真沒必要寫出來,因為X不起任何作用。類似,bigint(x)
也一樣,寫X與不寫應該都是一個效果,其在資料庫中所能儲存的最大值只是與其自己本身表示的欄位長度有關。但是varchar(x)
中的x是有作用的,起到限制字串長度的作用。
總結
類似於int(x)、bigint(x)
中的x其實沒必要寫,或者寫了也沒什麼作用,其儲的最大值只是與其自己本身表示的欄位長度有關。所以把int(x)
改為bigint(x)
,就不會再報錯了。
以上總結如有疑問,歡迎探討、如有錯誤,歡迎指出
相關文章
- java查詢資料庫,int型欄位為null的情況Java資料庫Null
- 資料庫欄位問題資料庫
- SqlSugar code first 欄位為列舉型別,預設生成資料庫欄位為bigint如何設定為int型別SqlSugar型別資料庫
- 資料庫設計——冗餘欄位資料庫
- 資料庫表欄位命名規範資料庫
- 資料庫欄位簡寫說明資料庫
- mysql資料庫新增和修改欄位MySql資料庫
- 資料庫設計之欄位冗餘資料庫
- mysql-資料庫欄位date datetimeMySql資料庫
- 資料庫索引欄位請不要為NULL資料庫索引Null
- andFilterWhere()函式找不出某個int型別欄位為0的資料Filter函式型別
- 資料庫中欄位資料型別以及約束資料庫資料型別
- 序列化,資料庫存多個欄位資料資料庫
- 為什麼資料庫表的int型別欄位對映到實體類中要使用Integer型別,而不是int型別?...資料庫型別
- 為什麼資料庫欄位要使用NOT NULL?資料庫Null
- 查詢某資料庫中所有的欄位資料庫
- MSSQL資料庫的欄位型別總結SQL資料庫型別
- mysql 資料庫 表 欄位 編碼修改 方法MySql資料庫
- 帝國cms所有資料庫欄位說明資料庫
- 保留兩位小數:資料庫欄位型別NUMBER,Java欄位型別Double型別資料庫型別Java
- 模型資料追加欄位模型
- 資料庫系列:高併發下的資料欄位變更資料庫
- MYSQL資料庫欄位命名及設計規範MySql資料庫
- 【04】把 Elasticsearch 當資料庫使:按欄位聚合Elasticsearch資料庫
- 轉載:Oracle常用的資料庫欄位型別Oracle資料庫型別
- mybatis 實體類排除資料庫欄位對映MyBatis資料庫
- Gridview繫結資料庫的欄位,根據條件欄位顏色改變View資料庫
- 位運算-設計資料庫表的多選狀態欄位資料庫
- MySQL資料庫中庫、表名、欄位的大小寫問題MySql資料庫
- 動態為10g資料庫的表新增欄位,到256個欄位,hung住了?資料庫
- ASP獲取資料庫表名,欄位名以及對欄位的一些操作 (轉)資料庫
- 資料欄位型別匹配型別
- 資料庫效能優化之冗餘欄位的作用資料庫優化
- 對資料庫中的表或欄位重新命名資料庫
- PG 資料庫查詢欄位屬性的指令碼資料庫指令碼
- oracle 資料庫設定表和欄位的別名Oracle資料庫
- php讀取xml資料庫欄位超長處理PHPXML資料庫
- python獲取、修改mysql資料庫欄位屬性PythonMySql資料庫