{MySQL} mysqldump - option pour déplacer CONSTRAIN
Résolu
perassia
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
perassia Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
perassia Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'utilise mysqldump pour faire des sauvegardes de mes bases. J'ai remarqué que j'avais aléatoirement un problème de foreign key lorsque je remontait ces sauvegardes (ERROR 1005 (HY000))
J'ai remarqué que dans les dumps que je fesait, la commande 'constraint' se trouvait au niveau de la création de la table. Exemple :
CREATE TABLE `abonnement` (
`abonn_id` int(11) NOT NULL default '0',
`abonn_id_four` int(11) default NULL,
PRIMARY KEY (`abonn_id`),
KEY `abonn_id_four` (`abonn_id_four`),
CONSTRAINT `abonnement_ibfk_1` FOREIGN KEY (`abonn_id_four`) REFERENCES `fournisseur` (`four_id`) ON DELETE SET NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Cependant, j'ai vu que si je fesait le dump depuis PhpMyadmin 3.11, j'obtenais ça :
CREATE TABLE `abonnement` (
`abonn_id` int(11) NOT NULL DEFAULT '0',
`abonn_id_four` int(11) DEFAULT NULL,
PRIMARY KEY (`abonn_id`),
KEY `abonn_id_four` (`abonn_id_four`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
ALTER TABLE `abonnement`
ADD CONSTRAINT `abonnement_ibfk_1` FOREIGN KEY (`abonn_id_four`) REFERENCES `fournisseur` (`four_id`) ON DELETE SET NULL;
Comme je pense que PhpMyAdmin utilise mysqldump, quelle est l'option de mysqldump qui permet de faire sortir le constraint du create table ?
Merci par avance à ceux qui répondront.
J'utilise mysqldump pour faire des sauvegardes de mes bases. J'ai remarqué que j'avais aléatoirement un problème de foreign key lorsque je remontait ces sauvegardes (ERROR 1005 (HY000))
J'ai remarqué que dans les dumps que je fesait, la commande 'constraint' se trouvait au niveau de la création de la table. Exemple :
CREATE TABLE `abonnement` (
`abonn_id` int(11) NOT NULL default '0',
`abonn_id_four` int(11) default NULL,
PRIMARY KEY (`abonn_id`),
KEY `abonn_id_four` (`abonn_id_four`),
CONSTRAINT `abonnement_ibfk_1` FOREIGN KEY (`abonn_id_four`) REFERENCES `fournisseur` (`four_id`) ON DELETE SET NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Cependant, j'ai vu que si je fesait le dump depuis PhpMyadmin 3.11, j'obtenais ça :
CREATE TABLE `abonnement` (
`abonn_id` int(11) NOT NULL DEFAULT '0',
`abonn_id_four` int(11) DEFAULT NULL,
PRIMARY KEY (`abonn_id`),
KEY `abonn_id_four` (`abonn_id_four`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
ALTER TABLE `abonnement`
ADD CONSTRAINT `abonnement_ibfk_1` FOREIGN KEY (`abonn_id_four`) REFERENCES `fournisseur` (`four_id`) ON DELETE SET NULL;
Comme je pense que PhpMyAdmin utilise mysqldump, quelle est l'option de mysqldump qui permet de faire sortir le constraint du create table ?
Merci par avance à ceux qui répondront.
A voir également:
- {MySQL} mysqldump - option pour déplacer CONSTRAIN
- Déplacer colonne excel - Guide
- Option d'ergonomie - Guide
- Déplacer barre des taches windows 11 - Guide
- Mysql community server - Télécharger - Bases de données
- Option volte/vowifi - Guide
1 réponse
Bon, auto réponse.
Après une heure de recherche sur le net, c'est à priori impossible.
La solution serait d'enlever la gestion des foreign keys lors de la restauration de la sauvegarde avec les commandes suivantes
(
echo "SET AUTOCOMMIT=0;"
echo "SET FOREIGN_KEY_CHECKS=0;"
cat databasedump.sql
echo "SET FOREIGN_KEY_CHECKS=1;"
echo "COMMIT;"
echo "SET AUTOCOMMIT=1;"
) | mysql --user=username --password=password database
Pas encore testé, mais à priori devrai marché tout seul
Après une heure de recherche sur le net, c'est à priori impossible.
La solution serait d'enlever la gestion des foreign keys lors de la restauration de la sauvegarde avec les commandes suivantes
(
echo "SET AUTOCOMMIT=0;"
echo "SET FOREIGN_KEY_CHECKS=0;"
cat databasedump.sql
echo "SET FOREIGN_KEY_CHECKS=1;"
echo "COMMIT;"
echo "SET AUTOCOMMIT=1;"
) | mysql --user=username --password=password database
Pas encore testé, mais à priori devrai marché tout seul