3 votes

Pourquoi ma table ne supporte-t-elle pas les FOREIGN KEYS ?

J'ai créé une base de données et 10 tables en mysql (table type NONE) et je n'arrive pas à créer des clés étrangères. Un message d'alerte dit

SQLyog La table sélectionnée ne supporte pas les clés étrangères. Le moteur de table doit être InnoDB, PBXT ou SolidDB.

Dois-je maintenant modifier tous mes tableaux ? Merci pour toute indication ou suggestion.

18voto

wsorenson Points 2364

En général, InnoDB est utilisé pour prendre en charge les clés étrangères et les transactions :

http://dev.mysql.com/doc/refman/5.1/en/innodb.html

Vous pouvez changer le moteur de la table à la volée :

ALTER TABLE tableName ENGINE = InnoDB;

Vous pouvez également modifier la valeur par défaut -- pour les tables nouvellement créées -- comme indiqué ici :

http://dev.mysql.com/doc/refman/5.1/en/storage-engine-setting.html

8voto

user191363 Points 178

Le moteur que vous utilisez ne prend pas en charge les clés étrangères (comme le message d'erreur vous l'indique manifestement). Vous pouvez changer le moteur que vous utilisez avec

ALTER TABLE `tableName` ENGINE = newEngine;

4voto

Ramon Points 3465

Le moteur de stockage par défaut (MyISAM) ne prend pas en charge les contraintes de clé étrangère.

3voto

MarkR Points 37178

Le moteur MyISAM supporte les clés étrangères. Ce qu'il ne supporte pas, ce sont les contraintes de clés étrangères.

Vous pouvez créer autant de clés étrangères que vous le souhaitez, mais n'attendez pas de la base de données qu'elle applique l'intégrité à votre place.

Ne changez pas de moteur dans votre application sans avoir effectué des tests approfondis ; le changement de moteur affecte le comportement et n'est pas recommandé sans une grande prudence et beaucoup de travail d'assurance qualité. En particulier, le passage de MyISAM à InnoDB brisera votre application si.. :

  • Il ne gère pas les blocages de manière appropriée (les blocages ne se produisent pas sur MyISAM).
  • Il s'attend à un verrouillage au niveau de la table
  • Il s'appuie sur les fonctionnalités (pour la plupart douteuses) de MyISAM
  • Il s'agit de performances élevées et vous n'avez pas compris comment régler InnoDB correctement, mais vous avez bien réglé MyISAM (ou pas mal).
  • Vous n'avez pas évalué l'impact du changement de moteur sur l'espace disque.

1voto

Aman Points 11

J'avais le même problème jusqu'à ce que je trouve ce poste .

Pour pallier les limites de MyISAM ou NDB (Cluster), les contraintes peuvent être appliquées à l'aide de déclencheurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X