在mysql中插入电话号码不起作用
我在mysql中有一个表,用于将事件协调员(用于fest)注册为: 无论何时运行查询:在mysql中插入电话号码不起作用,mysql,Mysql,我在mysql中有一个表,用于将事件协调员(用于fest)注册为: 无论何时运行查询: INSERT INTO `coordinators` (eventid, name, phone, email) VALUES('1', 'abcdef', '8285066537', 'abcdef@xyz.com') 无论我尝试什么电话号码,如果长度>=9,mysql将其更改为4294967295 请帮忙 由于phone被定义为phone INT(10),整数不能放入代码中。错误在于您将手机置于引号中
INSERT INTO `coordinators` (eventid, name, phone, email)
VALUES('1', 'abcdef', '8285066537', 'abcdef@xyz.com')
无论我尝试什么电话号码,如果长度>=9,mysql将其更改为4294967295
请帮忙 由于
phone
被定义为phone INT(10)
,整数不能放入代码中。错误在于您将手机置于引号中'8285066537'
此外,查询中的引号中有eventid
(eventid
定义为eventid INT
)
您的查询应该是
INSERT INTO `coordinators` (eventid, name, phone, email)
VALUES (1, 'abcdef', 8285066537, 'abcdef@xyz.com')
更新1
关于4294967295
,您必须将phone to定义为INT的最大范围为4294967295
。因此您的号码8285066537
四舍五入为4294967295
如果您现在有任何问题,请告诉我。将电话号码存储在数字字段中是行不通的。例如,您永远无法存储前导零或其他字符,如大括号或加号,这些字符通常用于指示区号和国家代码
电话号码应始终存储为varchar。这是因为您对最大值为2^32-1(
2147483647
)的电话号码使用数据类型int
)或4294967295
如果未签名。您应该使用数据类型varchar
作为电话号码。ohh!!明白了。电话的数据类型必须是BIGINT
,因为未签名INT的最大值为4294967295
!:PDid您是否尝试增加INT数据类型上的数字?即INT(15)还是什么?是的…我把它改成20,但仍然没有工作。因为电话号码不是数学运算的主题,我同意VARCHAR更合适。毕竟,作为一个字符串,你可以做诸如区域代码或交换搜索之类的事情。尽管对于这些类型,YoWD甚至可以考虑拆分区域代码和其余部分。电话号码不是一个号码,它是一个发生在(通常情况下)的代码由数字字符组成。有时电话号码包括分机号码、特定国家/地区的格式、一些地方喜欢拼出他们的号码等。同样的情况也适用于邮政编码、SSN和其他看起来有点像号码的东西,它们不是号码,它们是字符串(主要是)包含数字字符。不。它仍然是4294967295
。我想这是因为无符号整数的大小限制。啊,我没有注意到……您必须将phone INT(10)
的数据类型更改为phone BIGINT
。有关更多详细信息,请参阅……我也同意,尽管“永远不会工作”非常强大(Facebook价值数十亿美元,他们将手机储存为数字:)这是一个非常糟糕的选择,但我想现在很难改变它。同意-但大男孩仍然会犯错误。如果他们在设计facebook2时需要一些帮助,也许他们应该打电话给我们:)
INSERT INTO `coordinators` (eventid, name, phone, email)
VALUES (1, 'abcdef', 8285066537, 'abcdef@xyz.com')