【问题标题】:MySQL Insert Failing with Duplicate Entry on IndexMySQL 插入失败,索引上有重复条目
【发布时间】:2021-02-13 06:44:19
【问题描述】:

我正在尝试执行插入语句。我有一个独特的索引设置,它结合了 phone_number 和niche。

INSERT INTO CV_YP.table(电话号码、网站、利基)值 (1231231234, 'website.com', '健身')

返回值显示我有一个重复的条目,但电话号码与我刚尝试插入的不同。

第 1 行出现错误 1062 (23000):重复条目“2147483647-fitness” 键'idx_table_phone_number_niche'

我不明白为什么 MySQL 认为我的插入与它返回的索引重复有关。

【问题讨论】:

  • 电话号码使用VARCHAR,而不是INT

标签: mysql sql indexing sql-insert innodb


【解决方案1】:

我想如果你运行这个查询

SELECT * FROM CV_YP.table WHERE phone_number = '2147483647' AND niche = 'fitness';

你会发现超过 1 行,所以我认为它违反了唯一索引,所以当引擎尝试检查新数据的唯一性时,会触发此错误

更新

我想你的电话号码不是1231231234 对吧? 它是一个大于 2147483647 的数字,并且您使用 phone_number 数据类型作为 int

如果这是真的,我认为您需要更改 phone_number 列的数据类型,因为 int 的最大值是 2147483647,所以当您插入新数字时,引擎会将其视为最大值,即 @987654326 @ 并尝试插入它。

【讨论】:

  • 我运行了它,它只返回一行。该行看起来很正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 2012-04-12
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 2010-10-23
相关资源
最近更新 更多