Forum général.général MySQL Innodb désactivation clés étrangères

Posté par  .
Étiquettes :
0
18
août
2005
B'jour m'sieurs 'dames

Est-il possible de désactiver la vérification des contraintes de clés étrangères dans les tables innodb d'une base mysql ?

Je cherche à sauvegarder les liens entre les tables sans pour autant alourdir les traitements avec les vérifications de clés mais tout ceci en conservant les possibilités des transactions.
Je pourrais moi-même créer un fichier dans lequel énumérer les contraintes mais je préfère les centraliser dans la base.
Et puis, AnalyseSI les crée si bien ... :)

Le type MyISAM prend en compte les contraintes de clés étrangères et ne les vérifie pas, mais, à ma (faible) connaissance, ne gère pas les transactions (COMMIT et ROLLBACK sans effet, arrêtez moi si je me trompe...).

Après quelques recherches sur ce bon vieux Google, on me dit que :
SET FOREIGN_KEY_CHECKS = 0
désactive les vérifications des contraintes de clés étrangères.
Mais voulant désactiver la vérification en général, je rajoute dans mon fichier d'initialisation :
set-variable = FOREIGN_KEY_CHECKS=0
dans la section :
[mysqld]

Mais impossible de redémarrer le serveur :
MySQL: unknown variable 'foreign_key_checks = 0'

J'ai bien essayé de rajouter la ligne dans la section
[client]
mais maintenant je ne peux plus ouvrir de console alors que les scripts perl arrivent très bien à travailler.
D'ailleurs, j'ai aussi tenté un
set-variable = AUTOCOMMIT=0
mais les scripts s'en contre-fichent royalement.

Quelqu'un aurait-il un début de piste ?
Je suis prêt à retourner ma veste et en remonter les manches pour me mettre à PostgreSQL :)
  • # Variable de session

    Posté par  . Évalué à 2.

    En fait FOREIGN_KEY_CHECKS est une variable de session, à utiliser avant tes traitements lourds (voir http://dev.mysql.com/doc/mysql/en/innodb-foreign-key-constraints.ht(...)

    Si tu ne veux pas de vérification des foreign keys par la base, ben, autant ne pas les déclarer...
  • # meuh

    Posté par  (site web personnel) . Évalué à 2.

    ben supprime la contrainte, si tu n'en veux pas. ca ne sert absolument a rien d'avoir une contrainte et de la "désactiver" de temps en temps, tu n'as plus aucune certitude sur la contrainte ensuite.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.