【问题标题】:Why is my MySQL unique key failing?为什么我的 MySQL 唯一键失败了?
【发布时间】:2012-06-22 21:30:17
【问题描述】:
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 开头...

以下是我构建密钥的方法: 添加唯一的uneekMLSNUMBERPOSITION

有没有办法构建此密钥,使其接受整个 10 位而不是前 7 位?

提前致谢!

【问题讨论】:

    标签: mysql unique-index


    【解决方案1】:

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

    ALTER TABLE media MODIFY COLUMN MLSNUMBER BIGINT NOT NULL;
    (Modify unsigned and not null for your needs).
    

    【讨论】:

    • 他没有AUTO_INCREMENT 或者他没有使用它。他明确提供了此列的值。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      相关资源
      最近更新 更多