之前服務器數據丟失後決定搬家了用PHPMYADMIN導出,因為數據庫文件比較大,所以直接使用MYSQL命令直接導入
MySQL導出導入命令
但是結果卻不斷的出現
ERROR 1062 (23000) at line 1262: Duplicate entry '?�ꡣ�H�o' for key 2
然後就中止了.NND這家伙吃軟不吃硬。來硬的。。 --force。強行導入。不退出
# mysql -u root -p fukai --force < dmc010003_db.myisam.sql
Enter password:
ERROR 1062 (23000) at line 1262: Duplicate entry '?�ꡣ�H�o' for key 2
ERROR 1062 (23000) at line 1263: Duplicate entry 'm?oʙ�H�m' for key 2
ERROR 1062 (23000) at line 1271: Duplicate entry '?���^��Ц' for key 2
ERROR 1062 (23000) at line 5182: Duplicate entry '?�ꡣ�H�o' for key 2
ERROR 1062 (23000) at line 5187: Duplicate entry '?���^��Ц' for key 2
ERROR 1231 (42000) at line 7268: Variable 'sql_mode' can't be set to the value of 'NULL'
yingouqlj@qljlearnhost:/home/jump$ mysql uynetwork <z.sql -u root -p
Enter password:
ERROR 1062 (23000) at line 20449: Duplicate entry '??????' for key 1費解
上網查閱後有說使用-FORCE 強制導入
mysql uynetwork <a.sql -force -u root -p然後出現一大段錯誤
但是還是存在問題
最後發現原來在PHPMYADMIN導出的時候文件編碼是UTF-8的最後使用
mysql uynetwork <p.sql -u root -p --default-character-set=utf8
總結
Duplicate entry...for key...的錯誤原因是主鍵的唯一值重復,在對數據庫進行修改、插入操作時,一但主鍵的唯一值重復就會報此錯誤,有時在表中存在多個主鍵時,對表操作仍然報此錯誤,是因為對該表的索引造成的。例如一個表中有 id1,id2兩個主鍵,但是在插入數據時已經存在了ff,11這樣一條紀錄,再插入ff,22這樣一條記錄應該是沒問題的,但是卻報出上面這個錯誤,導致的原因就是索引時只對id1這個字段進行了索引,沒有對id2進行聯合索引,所以在插入ff,22這條記錄時會報錯。
處理方法:在該表的Indexes中的index_1進行處理,加入另外一個主鍵就可以了。