2010-10-22 4 views

Répondre

2

Vous devrez vous assurer que votre table MySQL utilise le moteur InnoDB, en lançant ce qui suit à partir de l'invite mysql.

show create table cred_insurances 

la sortie comprendra (vers le bas) le texte ENGINE=.... Si ce n'est pas InnodDB, alors vous devrez d'abord le convertir en utilisant le SQL suivant. Vous devrez peut-être faire cela à la table parent aussi bien.

ALTER TABLE cred_insurances ENGINE=InnoDB 

Ensuite, vous pouvez ajouter une colonne et une contrainte de clé étrangère avec la commande suivante:

ALTER TABLE cred_insurances 
    ADD practice INT, 
    ADD CONSTRAINT fk_practice 
    FOREIGN KEY (practice) REFERENCES practices (ID) 

Si vous rencontrez des difficultés avec des erreurs tout en ajoutant une clé étrangère, essayez la commande suivante pour obtenir des informations plus détaillées sur l'erreur.

SHOW ENGINE INNODB STATUS 
+0

@ar: J'ai modifié les deux tables en InnoDB ok, mais je reçois toujours "ERROR 1005 (HY000): Impossible de créer une table './credentialing1/#sql-8e1_58.frm' (errno: 150)" quand je lance le commander. Conseil? –

+0

@ar: J'ai été en mesure d'exécuter votre commande après le retour à MyISAM, mais comment vérifier qu'il a pris? –

+0

@ar: J'ai été capable de faire ce dont j'avais besoin sans aucun changement d'ISAM à InnoDB. Pourquoi avez-vous ressenti le besoin d'ajouter cette complexité? Il doit y avoir une raison impérieuse, non? –

Questions connexes