我运行此代码:
INSERT INTO x.contacts (`id`, `name`, `address`) SELECT `id`, `name`, `address` FROM y.contacts;
它给了我以下错误:
错误:重复输入' 6323'关键' PRIMARY'
当我在y.contacts
表中搜索ID 6323时,它只出现一次。
那我为什么会收到这个错误?
答案 0 :(得分:1)
自动增量列中有一个ID为0的记录导致了问题。
答案 1 :(得分:0)
您需要检查表.contacts
,看起来表格中已经有值6323。
如果您签入表.contacts
,您会发现ID为6323的行已经存在,因此错误。
答案 2 :(得分:0)
发生错误是因为您尝试复制现有行。该ID已存在一次,在执行您的命令时,您将其复制。
答案 3 :(得分:0)
我遇到了同样的错误,但是没有ID记录。在我的情况下REPAIR TABLE tablename
修复了问题。
mysql> repair table items ;
+------------------+--------+----------+--------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+--------------------------------------------+
| mydb.items | repair | warning | Number of rows changed from 56263 to 56264 |
| mydb.items | repair | status | OK |
+------------------+--------+----------+--------------------------------------------+
2 rows in set (0.40 sec)
MySQL版本:
% mysql --version /www/stackful.com
mysql Ver 14.14 Distrib 5.1.47, for redhat-linux-gnu (i386) using readline 5.1