2015-10-20 108 views
2

我運行此代碼:重複條目X發現

INSERT INTO x.contacts (`id`, `name`, `address`) SELECT `id`, `name`, `address` FROM y.contacts; 

,它給我下面的錯誤:

Error: Duplicate entry '6323' for key 'PRIMARY'

當我搜索ID 6323在y.contacts的表中,它只出現一次。

那麼,爲什麼我會得到這個錯誤?

+0

請告訴我們您所使用的_full_'INSERT'聲明,不是轉述的版本。 –

+0

INSERT INTO x.contacts( \t'id', \t'name', \t'address' ) SELECT \t'id', \t'name', \t'address' 選自Y。 'contacts'; – AllCode

+0

什麼是錯誤的任何好建議? – AllCode

回答

1

在導致問題的自動增量列中存在ID爲0的記錄。

0

你需要在表格.contacts檢查,它看起來像表中已經有一個值6323。

如果您在表.contacts檢查你會發現,ID爲6323的行已經存在,因此錯誤。

+0

(對不起,這些表格被稱爲x.contacts)。 表是空的,我在運行代碼之前截斷它 – AllCode

+0

有什麼不好的建議是什麼錯誤? – AllCode

0

發生此錯誤是因爲您嘗試複製現有的行。該ID已經存在一次,並且在執行命令時,會複製它。

+0

(對不起,這些表格被稱爲x.contacts)。 表是空的,我在運行代碼之前截斷它 – AllCode

+0

有什麼好的建議,哪些是錯誤的? – AllCode

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