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:

 

[php]DELETE FROM tabella1 WHERE campoFK IN (SELECT campoFK FROM tabella1 where campoFK NOT IN (SELECT campoPK FROM tabella2))[/php]

 

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS