【问题标题】:MYSQL, Error 1062MYSQL,错误 1062
【发布时间】:2018-11-27 13:15:28
【问题描述】:

我在向表中插入值时遇到问题。我收到了Error Code: 1062 错误消息。

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

创建表`roof_panel_width`( `rpw_id` int(11) NOT NULL AUTO_INCREMENT, `width_in_inches` 十进制(2,1)不为空, 主键(`rpw_id`), 唯一键`width_in_inches`(`width_in_inches`) ) 引擎=InnoDB AUTO_INCREMENT=30 默认字符集=latin1'

使用跟随码时返回错误码。

插入到`roof_panel_width`(`width_in_inches`) 值 (14),(16),(18),(24),(29.5),(36);

返回的完整错误是

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

我没有尝试插入值 9.9,并且该表将仅包含上述值。此刻是空的。我也尝试过删除表并创建新表。错误代码没有变化。任何帮助将不胜感激。

【问题讨论】:

  • 你用的是什么mysql版本?
  • 版本为5.6.39

标签: mysql unique-key mysql-error-1062


【解决方案1】:

问题在于,通过将列设置为 DECIMAL(2,1),您最多允许该数字包含 2 个部分,因此 1 表示整体,1 表示小数。当您尝试插入 14 和 16 时,它会将其更改为两者的最大值 9.9,并导致重复。

如果将小数列更改为 (3, 1),则可以上至 99.9

【讨论】:

  • 我开始输入相同的内容。你比我快 30 秒。
  • 谢谢你这样做。我误解了如何正确定义类型。
【解决方案2】:

DECIMAL(2,1) 更改为DECIMAL(3,1) 以将width_in_inches 列的值保持在最高99.9。为了保持更高的值,您需要相应地调整精度和缩放:

DECIMAL(precision, scale)

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 2017-03-08
    • 2011-08-12
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多