Mysql 2147483647上的Varchar问题

Chr*_*mit 3 mysql varchar

2147483647MYSQL问题.

当在电话领域插入一个11位数字时,我得到这个号码作为回报保存在 DB: 2147483647

电话设置VARCHAR并不INT严格.

另外,在SERVER1 上托管的数据库上,我有完全相同的数据库表并且没有相同的问题吗?可能是什么?

这是SQL和PHP

tel_no  varchar(20) utf8_general_ci  Yes    NULL
mob_no  varchar(20) utf8_general_ci  Yes    NULL
Run Code Online (Sandbox Code Playgroud)

这是MYSQL.是的我在数据库中插入一个11位数字作为字符串

$telno = GetValue($post['tel_no']);
$mobno = GetValue($post['mob_no']); 

$sql = "UPDATE ".$this->dbpre."bookings SET tel_no='$telno', mob_no='$mobno'...
Run Code Online (Sandbox Code Playgroud)

你能帮忙吗?我疯了!

Geo*_*rge 5

2147483647是mysql的最大int值.只需将类型从int更改为bigint.

  • 虽然你的数字是最大(签名)int值是正确的,但答案不是改为bigint,答案是从int更改为varchar,因为电话号码无法正确保存为整数(由于未知的长度,前缀如果适用,用于格式化的空格字符等). (2认同)