Vi è mai capitato di dover convertire un db che avesse come engine MYSQL in InnoDb?
Perchè cambiare engine? la prima cosa per le fantastiche constraint.
E’ appurato che nel 99% dei casi, quando si prova a creare una FOREIGN KEY, Mysql restituisce il messaggio di errore:
#1452 – Cannot add or update a child row….
Il codice di errore è utilizzato per indicare la presenza di dati inesistenti nella tabella a cui si sta facendo riferimento per la creazione delle chiavi.
Per risolvere velocemente questo problema quindi è necessario rimuovere tali dati con una semplice query:
DELETE FROM tabella1 WHERE campoFK IN ( SELECT campoFK FROM tabella1 WHERE campoFK NOT IN (SELECT campoPK FROM tabella2) )