Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Come posso risolvere un'attività AWS DMS non andata a buon fine a causa di un errore di violazione del vincolo di chiave esterna?
Ho un'attività di AWS Database Migration Service (AWS DMS) che fallisce a causa di una violazione del vincolo di chiave esterna.
Breve descrizione
Per impostazione predefinita, le attività AWS DMS caricano otto tabelle alla volta durante la fase di caricamento completo. Queste tabelle vengono caricate in ordine alfabetico per impostazione predefinita, a meno che non si configuri l'ordine di caricamento dell'attività. Per ulteriori informazioni, consulta L'ordine di caricamento delle tabelle a pieno carico in AWS Database Migration Service migliora la velocità di migrazione aggiungendo il supporto per il pieno carico parallelo e nuovi meccanismi di migrazione LOB.
Se non si configura l'ordine di caricamento per caricare prima le tabelle principali, è possibile che una tabella secondaria venga caricata prima della tabella principale. Ciò causa il fallimento dell'operazione con un errore di violazione del vincolo di chiave esterna. In questo caso, vengono visualizzate voci di registro simili ai seguenti esempi:
[TARGET_LOAD ]E: RetCode: SQL_ERROR SqlState: 0A000 NativeError: 1 Message: ERROR: cannot truncate a table referenced in a foreign key constraint; Error while executing the query [1022502] (ar_odbc_stmt.c:4622) [TARGET_LOAD ]E: RetCode: SQL_ERROR SqlState: HY000 NativeError: 1217 Message: [MySQL][ODBC 5.3(w) Driver][mysqld-5.7.23-log]Cannot delete or update a parent row: a foreign key constraint fails [1022502] (ar_odbc_stmt.c:4615)
La replica in corso utilizza la modalità** Transactional Applyche applica le transazioni nello stesso ordine di commit dell'origine. Quando l'attività è nella fase di replica in corso, è possibile attivare vincoli di chiave esterna sull'obiettivo. Se si utilizza la modalità Batch Apply** per la replica in corso, è necessario disattivare le chiavi esterne, anche durante la fase di acquisizione dei dati di modifica (CDC).
Risoluzione
Per risolvere questo errore, effettua una delle seguenti operazioni:
- Disattiva i vincoli della chiave esterna
- Usa la modalità Drop tables on target
Disattiva i vincoli della chiave esterna
Se il target è un database compatibile con MySQL, puoi utilizzare attributi di connessione aggiuntivi per disattivare i vincoli della chiave esterna:
initstmt=SET FOREIGN_KEY_CHECKS=0
Se il target è un database compatibile con PostgreSQL, vengono visualizzati errori di violazione della chiave esterna durante la fase CDC. Per risolvere questo errore, imposta il parametro** session\ _replication\ _role** su** replica**. Per fare ciò, aggiungi l'attributo di connessione aggiuntivo** afterConnectScript=set session\ _replication\ _role='replica'** all'endpoint. In alternativa, utilizza l'interfaccia della linea di comando AWS per aggiungere le impostazioni degli endpoint all'endpoint di destinazione.
Per altri motori di database, disattiva o eliminamanualmente i vincoli di chiave esterna.
**Nota:**Se riscontri errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS, assicurati di utilizzare la versione più recente dell'interfaccia della linea di comando AWS.
Usa Drop tables in modalità target
Quando usi la modalità Drop tables on target, AWS DMS crea solo gli oggetti necessari per il corretto funzionamento del carico sull'obiettivo. AWS DMS fa riferimento anche a questa impostazione dell'attività DROP\ _AND\ _CREATE. Tuttavia, se utilizzi la modalità Drop tables on target, devi creare manualmente altri oggetti al di fuori di AWS DMS. Gli altri oggetti includono indici secondari, dati predefiniti e trigger.
Informazioni correlate
Utilizzo del log delle attività per risolvere i problemi di migrazione

Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un mese fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 mesi fa