J'ai récemment changé d'emploi et dans cette nouvelle société nous utilisons MySQL. Je n'ai pas d'expérience avec MySQL, bien que j'aie utilisé SQL Server et Oracle depuis plus de 4 ans maintenant. Maintenant, la chose étrange que je vois avec MySQL est qu'il ne semble pas resepect certaines des choses de base comme Foreign Key Constraints (ce qui signifie qu'une colonne est une clé antérieure mais je peux insérer n'importe quelle valeur ici si elle est présente dans l'autre table où ce FK se rapportait à). Maintenant, je sais que dans SQL Server il y a ce concept de contrainte de clé foriegn NOCHECK mais le gars de la nouvelle société responsable de MySQL db dit que ne pas respecter un FK est une chose normale dans MySQL et il n'a pas besoin de paramètres spéciaux (comme Contrainte NOCHECK FK). Je ne comprends pas que dans un système de base de données, comment pouvez-vous assurer l'intégrité du référentiel sans avoir ces vérifications de base en place. Je ne suis pas sûr que le "expert" mySQL local le connaisse bien ou que mySQL ne respecte pas vraiment les règles FK. Des pensées?contrainte de clé étrangère non respectée
1
A
Répondre
3
Vérifiez que vos tables utilisent le moteur InnoDB. Lorsque vous utilisez le moteur MyISAM (qui était la valeur par défaut jusqu'à récemment), les déclarations de clés étrangères ne sont pas appliquées.
2
MySQL ont différents moteurs DB -
- MyISAM - par défaut, aucun support FK
- InnoDB - avoir le soutien FK - mais pas la recherche plein texte comme dans MyISAM
Sur les deux moteurs vous pouvez créer une table et essayer de créer FK, mais MyISAM l'ignorera simplement.
0
Assurez-vous également que les clés étrangères sont appliquées. Pour une raison quelconque, ils n'étaient pas sur le mien, conduisant à une semaine de maux de tête!
Vérifier:
SELECT @@FOREIGN_KEY_CHECKS
Set:
SET FOREIGN_KEY_CHECKS=1
Questions connexes
- 1. La génération de données génère une contrainte unique non respectée
- 2. Contrainte de clé étrangère (complexe?)
- 3. Contrainte de clé étrangère 5
- 4. Contrainte de clé étrangère - Pentaho
- 5. chute de contrainte étrangère clé
- 6. Une contrainte de clé étrangère échoue avec aucune clé étrangère
- 7. POSTGRESQL clé étrangère comme contrainte
- 8. Contrainte de clé étrangère complexe dans SQL
- 9. Erreur SQL contrainte de clé étrangère
- 10. Oracle contrainte de clé étrangère question
- 11. MySQL contrainte de clé étrangère disparaissant
- 12. Codeigniter contrainte de clé étrangère vérifier
- 13. MySQL contrainte de clé étrangère échoue
- 14. JPA: contrainte de clé étrangère sur Supprimer
- 15. contrainte de clé étrangère ne fonctionne pas
- 16. Modèle Magento avec contrainte de clé étrangère
- 17. Contrainte de clé étrangère MySQL - Colonne entière
- 18. contrainte de clé étrangère dans sql
- 19. Problème avec la contrainte de clé étrangère
- 20. erreur étrangère contrainte de clé dans JPA
- 21. Obtient la clé primaire et la contrainte de clé étrangère
- 22. Clé primaire/clé étrangère de base avec contrainte, séquence, déclencheur
- 23. Ajout d'une contrainte de clé étrangère dans la table par rapport à l'ajout d'une contrainte de clé étrangère
- 24. SQL Server 2005: contrainte de clé étrangère Nullable
- 25. La contrainte de clé étrangère de MySQL 5.5 échoue quand la clé étrangère existe
- 26. Requête de suppression SQL avec contrainte de clé étrangère
- 27. Erreur Mysql: 1215 Impossible d'ajouter une contrainte de clé étrangère
- 28. SQL add Contrainte de clé étrangère avec vérification
- 29. erreur de contrainte de clé étrangère de débogage
- 30. crash de w3wp sur violation de contrainte de clé étrangère
Comment puis-je vérifier cela? rappelez-vous je suis totalement nouveau à mySQL –
'show create table foo;' –