2013-04-07 25 views
5

ho migrato un'installazione mgento 'primaria' fare le seguenti:Magento SQLSTATE [23000]: Integrità vincolo violazione: 1062 Duplicate entry '363.624' per la chiave

  1. copiate tutti i file
  2. esportato il db
  3. importati utilizzando il db MySQL Workbench
  4. cambiato le base_url di al nuovo dominio
  5. aggiornato local.xml le impostazioni corrette

ora Im ottenendo:

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

Ho cercato il db per questa chiave 363.624, ma non sia duplicato come i messaggi dice

come posso risolvere questo problema?

+0

Quale tabella ti sta dando questo errore? – seanbreeden

risposta

8

Non è duplicato, ma piuttosto qualcosa deve essere provare per duplicarlo.

Come è stato esportato il database? Verifico che il file SQL scaricato abbia la riga "SET FOREIGN_KEY_CHECKS = 0;" o simile nella parte superiore.

In caso contrario, vorrei eliminare il database e aggiungere questa riga alla parte superiore del file:

SET FOREIGN_KEY_CHECKS = 0;

... e questa linea fino in fondo:

SET FOREIGN_KEY_CHECKS = 1;

... quindi riprovare.

+0

ciao, sto ricevendo lo stesso errore ma il mio problema è che non posso rilasciare il database poiché questo problema è iniziato di recente. ho troppi prodotti e dati. Come puoi applicare questa soluzione alla mia situazione? grazie. –

+0

Non pensi che sia una cattiva idea disabilitare i controlli delle chiavi esterne? È lì per una ragione in realtà. Questa non può essere una soluzione a lungo termine. – Chiragit007

+0

Una combinazione di questa soluzione e la soluzione Oscars ha funzionato per me – richelliot

5

Stavo ottenendo lo stesso errore.

Per quanto mi riguarda, risulta che l'esportazione ha richiesto così tanto tempo che il sito rimaneva "attivo" e che la fine dell'esportazione non era sincronizzata con l'inizio.

In particolare, la tabella "log_visitor_info" conteneva circa 100 record in più rispetto ad altre tabelle di registro dei visitatori correlate, pertanto il DB sta tentando di creare un ID record da un'altra tabella che esiste già qui.

Ho appena eliminato gli ultimi 100 circa di record da questa tabella specifica e le cose hanno funzionato di nuovo senza errori. In alternativa sembra che si possa schiacciare il tasto f5 fino a quando non si incrementa oltre quell'ID già esistente e Magento riprenderà a funzionare.

Ho il sospetto che mettere l'archivio in modalità di manutenzione prima dell'esportazione possa aiutare con questo particolare errore.

+2

Questa risposta è stata molto utile: ho trovato confrontando gli ID della tabella log_visitor_info con l'ID generato nel messaggio di errore che erano effettivamente circa 10 record non sincronizzati. Quindi, premendo refresh come suggerisci ca. 10 volte risolto per me. –

27

Questo mi ha aiutato (compensazione alcune delle tabelle):

Inserisci il tuo database di Magento ed eseguire query SQL seguente:

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

Questo funziona. Ritenuto che le tabelle di registro fossero aggiornate a metà esportazione causando incoerenze. –

+0

Una combinazione di questa soluzione e la soluzione di redjam13 ha funzionato per me – richelliot

0

Nel mio caso il problema era UTF-8 senza BOM la codifica in formato testo editore. Sono passato a UTF-8 con BOM e tutto funziona correttamente.

+0

Questo è piuttosto strano considerando che Magento raccomanda UTF-8 senza BOM per tutto. – versedi

0

se l'errore che mostra per il tavolo 'cataloginventory_stock_item' having 'UNQ_CATALOGINVENTORY_STOCK_ITEM_PRODUCT_ID_STOCK_ID' index,

quindi si prega di assicurarsi che si sta passando diverse SKU del prodotto dal vostro script.

+3

Se fornisci ulteriori spiegazioni sulla causa del problema e * come * la tua soluzione risolve il problema, questa potrebbe essere una buona risposta. Non sono sicuro di come questo risolva il problema, poiché riguarda la migrazione di Magento. –

0

Eseguire questa query sql nel database di 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 ; 

Innanzitutto occorre controllare la struttura della tabella "log_visitor_info". In questa tabella il campo 'visitor_id' è il valore predefinito come null. Se il valore predefinito è impostato come qualcosa, devi eseguire questa query sotto, altrimenti lascerai la query sottostante eseguendo la query precedente.

ALTER TABLE `log_visitor_info` CHANGE `visitor_id` `visitor_id` BIGINT(20) UNSIGNED NOT NULL COMMENT 'Visitor ID'; 
Problemi correlati