我在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
!!
请帮忙!
答案 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')
关于4294967295
,您必须将电话定义为BIGINT,因为INT的最大范围为4294967295
。因此,您的号码8285066537
正在四舍五入到4294967295
。
如果您现在有任何问题,请告诉我。