在mysql中插入电话号码不起作用

时间:2012-02-18 04:20:27

标签: mysql

我在mysql中有一个表来注册事件协调员(对于fest):

CREATE TABLE `coordinators` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT  'coordinator-id',
`eventid` INT UNSIGNED NOT NULL COMMENT  'event-id for which coordinating',
`name` VARCHAR( 100 ) NOT NULL COMMENT  'name of coordinator',
`phone` INT(10) UNSIGNED NOT NULL COMMENT 'event coordinators phone number',
`email` VARCHAR(100) NOT NULL COMMENT 'event coordinator email-id',
INDEX (  `eventid`, `name`, `phone`, `email` )
) ENGINE = INNODB COMMENT =  'stores event coordinator details'

每当我运行查询时:

INSERT INTO `coordinators` (eventid, name, phone, email) 
VALUES('1', 'abcdef', '8285066537', 'abcdef@xyz.com')

我尝试的电话号码,如果长度> = 9,则mysql将其更改为4294967295 !!

请帮忙!

3 个答案:

答案 0 :(得分:4)

在数字字段中存储电话号码永远不会起作用。例如,您永远无法存储前导零或其他字符,如通常用于指示区号和国家/地区代码的大括号或加号。

电话号码应始终存储为varchar。

答案 1 :(得分:1)

这是因为您使用的数据类型为int的电话号码,其最大值为2 ^ 32-1(2147483647)或4294967295(如果未签名)。您应该使用数据类型varchar作为电话号码。

答案 2 :(得分:0)

由于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,您必须将电话定义为BIGINT,因为INT的最大范围为4294967295。因此,您的号码8285066537正在四舍五入到4294967295

如果您现在有任何问题,请告诉我。