1. 程式人生 > >手機欄位儲存報錯 :Warning Code : 1264 Out of range value for column 'buyer_tpl' at row 1

手機欄位儲存報錯 :Warning Code : 1264 Out of range value for column 'buyer_tpl' at row 1

企鵝上朋友問我: 我這明明是11位的int 為啥還說超出範圍了呢,然後發來報警截圖



我看到是 buyer_tpl int(13)  unsigned NOT NULL,就知道是怎麼回事了,開啟dev.mysql.com/doc,找到int的章節,截圖發給他


手機號碼作為數字的話,已經超過了unsigned的峰值4294967296了,給他2個建議

1  將int型別換成bigint

2 將int型別換成varchar(11)的。

他問我 :“ bigint  和 varchar 存數字哪個好? 就11位手機這種。“

我說:“一般用int主要是考慮運算計算以及狀態值之類的,很少把包含具體業務意義的欄位設定成int,時間戳這種,一般用datetime的,也可以設定成bigint,因為時間戳有涉及到計算的,手機欄位一般用varchar居多的。”