2010-07-08 2 views
0

Je souhaite migrer l'une de mes bases de données myisam vers innodb. La raison principale est de permettre à mon application d'honorer l'intégrité référentielle.Problème d'intégrité référentielle lors de la migration de myisam vers innodb

C'est ce que je l'ai fait

  1. Exporté la base de données MyISAM actuelle
  2. Dropped la base de données
  3. Switched la base de données InnoDB http://parasjain.net/2010/06/08/how-to-switch-to-innodb-database-in-mysql/
  4. vérifié le commutateur du moteur, puis créé la nouvelle base de données

L'intégrité référentielle fonctionne maintenant. Par exemple, si je crée Parent p1 et Child c1 et que je renvoie p1 dans c1, je ne peux pas supprimer P1 tant qu'un enfant en dépend.

So far so good

Mais le problème se produit lorsque j'importer les anciennes données de la décharge exporté

Le problème est que l'intégrité référentielle est honoré pour les nouvelles données. Mais dans mes données existantes s'il y a une relation comme p2 référée par c2 alors je peux supprimer p2 briser l'intégrité référentielle. c2 est orphelin maintenant.

Existe-t-il un moyen de réparer/réindexer les tables afin que l'intégrité référentielle soit également appliquée aux données existantes?

+0

Pouvez-vous publier la sortie de 'SHOW CREATE TABLE' pour deux des tables liées affectées? – Mike

Répondre

0

Merci pour vos réponses. Cela aurait été utile parce que cela m'aurait mené à la cause profonde. La cause première du problème est que mysqldump contenait des instructions drop et create. Les instructions create avaient MOTEUR = MYISAM car au moment de l'export c'était le moteur.

J'ai créé un nouveau vidage en utilisant l'option --no-create-info et tout a bien fonctionné.

0

Assurez-vous que vous avez des index frais sur toutes vos clés étrangères et des clés référencées (index de table sont mis à jour chaque insertion), puis exécutez

ALTER TABLE you_table0 ADD FOREIGN KEY ... 

pour chaque table, avec toutes vos données existantes déjà en place .

Devrait fonctionner)

Questions connexes