3
INSERT INTO `ree`.`media` 
(`CREATEDATE`, `FILETYPE`, `MIMETYPE`, `MLSNUMBER`, `MODIFYDATE`, `POSITION`, `URL`) VALUES 
('2011-12-27T15:00:16', 'PRIMARY PHOTO', 'image/jpeg', 5030011414, '2011-12-27T15:00:16', 1, 'http://image.realcomponline.com/photos.rps?PATH=PROPERTY/57FA/57FAA44C48854C/3QQGONGA03I7CN.jpg&g=100&sp=0&l=0&t=0&r=10000&b=10000&o=0&1cf=0&w=320&h=240'),
('2011-12-27T15:00:18', 'PRIMARY PHOTO', 'image/jpeg', 5030011507, '2011-12-27T15:00:18', 1, 'http://image.realcomponline.com/photos.rps?PATH=PROPERTY/6FC7/6FC7B6F88D8F45/3SQGONGA01RXH1.jpg&g=100&sp=0&l=0&t=0&r=10000&b=10000&o=0&1cf=0&w=320&h=240')

错误: 键“uneek”的重复条目“2147483647-1”

似乎我的 MLSNUMBER 唯一键在区分两个插入之前没有解析整个数字。

两者都以 5030011 开头...

这是我构建密钥的方法: ADD UNIQUE uneek( MLSNUMBER, POSITION)

有没有办法构建这个密钥,所以它接受整个 10 位而不是前 7 位?

提前致谢!

4

2 回答 2

5

您已经超出了 int 的范围。2147483647 = 2^31 - 1 您可以将该字段上的这个 int 更改为例如 64 位:

ALTER TABLE media MODIFY COLUMN MLSNUMBER BIGINT NOT NULL;
(Modify unsigned and not null for your needs).
于 2012-06-22T21:37:12.763 回答
4

您似乎已将 MLSNUMBER 列定义为整数类型,并且大值被截断为最大的 32 位有符号值,即 2147483647。

我通过尝试将值 5030011507 添加到 Int 列来验证这一点,它最终存储了值 2147483647。这与错误消息中的数字相匹配。当值被截断时,我也收到了警告。

您可以尝试将列类型更改为 BIGINT,这将允许值高达 9223372036854775807。

于 2012-06-22T23:00:57.820 回答