代码之家  ›  专栏  ›  技术社区  ›  Brook Julias

MySQL,错误1062

  •  -2
  • Brook Julias  · 技术社区  · 7 年前

    我有一个问题,将值插入到表中。我收到了 Error Code: 1062 错误消息。

    使用 SHOW CREATE TABLE roof_panel_width; 这个 CREATE 返回了相关表的代码。

    CREATE TABLE `roof_panel_width` (
        `rpw_id` int(11) NOT NULL AUTO_INCREMENT,
        `width_in_inches` decimal(2,1) NOT NULL,
        PRIMARY KEY (`rpw_id`),
        UNIQUE KEY `width_in_inches` (`width_in_inches`)
    ) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1'
    

    使用以下代码时返回错误代码。

    INSERT INTO `roof_panel_width` (`width_in_inches`)
    VALUES (14),(16),(18),(24),(29.5),(36);
    

    返回的完整错误是

    Error Code: 1062. Duplicate entry '9.9' for key 'width_in_inches'

    我不想插入值9.9,表只包含上面的值。现在是空的。我也试过放下桌子,重新做一个。错误代码没有变化。任何帮助都将不胜感激。

    2 回复  |  直到 7 年前
        1
  •  1
  •   gabe3886    7 年前

    问题是,通过设置一个列为十进制(2,1),您允许最多2个部分到数字,因此1个为整数,1个为小数。当你试图插入14,然后16,它正在改变这是最大的9.9为两者,并导致一个副本。

    如果您将十进制列更改为(3,1),则可以增加到99.9

        2
  •  0
  •   Kamil Gosciminski    7 年前

    变化 DECIMAL(2,1) DECIMAL(3,1) 将列的值保持在99.9以内 width_in_inches . 为了保持较高的数值,您需要相应地调整精度和刻度:

    DECIMAL(precision, scale)