2013-04-07 5 views
5

mam przeniesione instalacja mgento 'pierwotna' w następujący sposób:Magento SQLSTATE [23000]: Integrity ograniczenie naruszenie: 1062 Duplikat entry '363624' na klucz

  1. skopiowane wszystkie pliki
  2. eksportowane db
  3. importowane db używając warsztatu mysql
  4. zmienił base_url do nowej domeny
  5. zaktualizowaną local.xml do prawidłowych ustawień

teraz im się:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '363624' for key 'PRIMARY' 

Przeszukałem dB dla tej kluczowej 363624, ale to nie jest powielany jako komunikaty mówi

jak mogę rozwiązać ten problem?

+0

Która tabela zawiera ten błąd? – seanbreeden

Odpowiedz

8

Nie jest duplikowany, ale musi coś, co musi być próbować, aby go zduplikować.

W jaki sposób wyeksportowałeś bazę danych? Sprawdziłbym, czy porzucony plik SQL ma wiersz "SET FOREIGN_KEY_CHECKS = 0;" lub podobny u góry.

Jeśli nie, chciałbym usunąć bazę danych i dodać tę linię do początku pliku:

SET FOREIGN_KEY_CHECKS = 0;

... i ta linia na dole:

FOREIGN_KEY_CHECKS SET = 1;

... następnie spróbuj ponownie.

+0

cześć Otrzymuję ten sam błąd, ale mój problem polega na tym, że nie mogę upuścić bazy danych, ponieważ problem ten zaczął się niedawno. Mam zbyt wiele produktów i danych. Jak zastosować to rozwiązanie w mojej sytuacji? Dziękuję Ci. –

+0

Czy uważasz, że nie jest to zły pomysł, aby wyłączyć kontrole kluczy obcych? Jest tam właściwie z powodu. To nie może być długoterminowe rozwiązanie. – Chiragit007

+0

Połączenie tego rozwiązania i rozwiązania Oscarów zadziałało dla mnie – richelliot

5

Otrzymałem ten sam błąd.

Dla mnie okazało się, że eksport trwał tak długo, że strona pozostała "na żywo", ponieważ koniec eksportu był niezsynchronizowany z początkiem.

W szczególności, tabela "log_visitor_info" miała około 100 więcej rekordów niż niektóre inne tabele powiązanych dzienników gości, więc DB próbuje utworzyć identyfikator rekordu z innej tabeli, która już istnieje.

Właśnie usunąłem ostatnie 100 lub więcej rekordów z tej konkretnej tabeli i wszystko działało bezbłędnie. Alternatywnie wygląda na to, że możesz zacierać na kluczu F5, dopóki nie przekroczysz już istniejącego identyfikatora i Magento zacznie działać ponownie.

Podejrzewam, że umieszczenie sklepu w trybie konserwacji przed eksportem może pomóc w tym konkretnym błędzie.

+2

Ta odpowiedź była tak pomocna - stwierdziłem, porównując identyfikatory tabeli log_visitor_info z wygenerowanym identyfikatorem w komunikacie o błędach, że rzeczywiście było to około 10 rekordów zsynchronizowanych. W związku z tym, uderzając odświeżaj jak sugerujesz ok. 10 razy naprawił to dla mnie. –

27

To pomogło mi (kasowanie niektórych tabelach):

Wpisz swoje bazy Magento i uruchomić następujące zapytanie SQL:

TRUNCATE dataflow_batch_export ; 
TRUNCATE dataflow_batch_import ; 
TRUNCATE log_customer ; 
TRUNCATE log_quote ; 
TRUNCATE log_summary ; 
TRUNCATE log_summary_type ; 
TRUNCATE log_url ; 
TRUNCATE log_url_info ; 
TRUNCATE log_visitor ; 
TRUNCATE log_visitor_info ; 
TRUNCATE log_visitor_online ; 
TRUNCATE report_event ; 
+0

To działa. Zauważyłem, że tabele dziennika były aktualizowane w trakcie eksportu, co powodowało niespójności. –

+0

Połączenie tego rozwiązania i rozwiązania redjam13 dla mnie zadziałało. – richelliot

0

w moim przypadku problem był UTF-8 bez kodowania BOM w tekście redaktor. Zmieniłem kodowanie UTF-8 na BOM i wszystko działa dobrze.

+0

To dość dziwne, biorąc pod uwagę, że Magento zaleca UTF-8 bez LM na wszystko. – versedi

0

jeśli błąd pokazując na stole 'cataloginventory_stock_item' having 'UNQ_CATALOGINVENTORY_STOCK_ITEM_PRODUCT_ID_STOCK_ID' index,

prosimy upewnić się, że są przechodzącą innego produktu Symbol ze skryptu.

+3

Jeśli podasz więcej wyjaśnień dotyczących przyczyny problemu i * jak * Twoje rozwiązanie rozwiązuje problem, może to być dobra odpowiedź. Nie jestem pewien, w jaki sposób rozwiązuje to problem, ponieważ chodzi o migrację magento. –

0

Uruchom to zapytanie sql w bazie danych Magento.

TRUNCATE dataflow_batch_export ; 

TRUNCATE dataflow_batch_import ; 

TRUNCATE log_customer ; 

TRUNCATE log_quote ; 

TRUNCATE log_summary ; 

TRUNCATE log_summary_type ; 

TRUNCATE log_url ; 

TRUNCATE log_url_info ; 

TRUNCATE log_visitor ; 

TRUNCATE log_visitor_info ; 

TRUNCATE log_visitor_online ; 

TRUNCATE report_event ; 

Najpierw należy sprawdzić strukturę tabeli "log_visitor_info". W tej tabeli pole "visitor_id" powinno mieć domyślną wartość null. Jeśli wartość domyślna jest ustawiona jako cokolwiek, powinieneś uruchomić to zapytanie poniżej, W przeciwnym razie pozostaw to w poniższym zapytaniu, po prostu wykonaj powyższe zapytanie.

ALTER TABLE `log_visitor_info` CHANGE `visitor_id` `visitor_id` BIGINT(20) UNSIGNED NOT NULL COMMENT 'Visitor ID'; 
Powiązane problemy