Ok donc je reste sur le script !
Parcontre pour retirer l'auto increment sur la clés primaire ca ne fonctionne pas (j'ai un message d'erreur) je l'ai fais graphiquement parcontre.
Version imprimable
Ok donc je reste sur le script !
Parcontre pour retirer l'auto increment sur la clés primaire ca ne fonctionne pas (j'ai un message d'erreur) je l'ai fais graphiquement parcontre.
Du moment que c'est fait !
Si tu le fais graphiquement dans phpMyAdmin, en principe, il affiche la requête qu'il a exécutée pour faire l'opération.
Je préfere faire ça en commande pour laisser un script après cela. Parce que graphiquement j'ai fais un peu n'importe quoi vu que les requêtes DROP (pour la clés) ne passe pas ...
En exécutant les requêtes d'hier (pour supprimer la clés primaire, créer une nouvelle colonne t1_bdd et ajouter celle ci dans la clés primaire) j'ai le message suivant :
Code:Multiple primary key defined
Donner le message d'erreur sans donner ce qui a provoqué l'erreur ne sert pas à grand chose !
Ok, on reprends à 0 tes requêtes :
En tapant :
J'obtiens :Code:
1
2 ALTER TABLE BDD0.table1 DROP PRIMARY KEY;
(Le but est d'ajouter un champs d'identification de la BDD dans la clés primaire)Code:Incorrect table definition; there can be only one auto column and it must be defined as a key
Merci.
C'est suite à ça que j'avais dit :
Regarde la doc pour te guider.Citation:
Envoyé par CinéPhil
Ben évidemment ! :roll:
Tu lui donnes la contrainte de ne pas être à NULL et tu lui donnes NULL comme valeur par défaut !Citation:
Code:NOT NULL DEFAULT NULL
Retire le DEFAULT NULL. Cette colonne est déjà valorisée dans les données que tu va y importer donc la valeur par défaut ne sert ici à rien.
J'ai supprimé l'auto incrémentation graphiquement (n'ayant pas trouver la commande sur la doc), j'obtient maintenant le message d'erreur suivant :
En exécutant la commande suivante :Code:Error on rename of '.\bdd3\#sql-570_26e' to '.\bdd3\calibration' (errno: 150)
MerciCode:
1
2 ALTER TABLE BDD3.calibration DROP PRIMARY KEY;
Tu vas trop vite !
J'ai répondu à un de tes messages que tu as supprimé depuis !
Réfléchis avant de te précipiter sur le forum !
J'ai essayé plusieurs manipulations mais ça ne fonctionne toujours pas.
En testant la requête d'insertion avec une valeur identique la colonne dans la calibration_id, j'ai un ERREUR DUPLICATE KEY.
Et en mettant le DROP KEY par la suite, il ma pas retirer la clés jaune de la colonne calibration_id, uniquement celle de t1_bdd !
Merci!
Donne la description complète de ta table issue de la requête SHOW CREATE TABLE nom_de_la_table
Voilà la table sur les BDD, dans la BDD centralisée on ajoutera comme on a dit un champs t1_bdd pour identifier la BDD :
Je veux pouvoir entrer des données avec le même calibration_id provenant de BDD différentes.Code:
1
2
3
4
5
6
7
8
9
10 'calibration', 'CREATE TABLE `calibration` ( `CALIBRATION_id` int(11) NOT NULL AUTO_INCREMENT, `CALIBRATION_Name` varchar(45) NOT NULL, `CALIBRATION_Tolerance` float DEFAULT NULL, `CALIBRATION_Validity_Time` int(11) NOT NULL, `CONFIG_CONFIG_id` int(11) NOT NULL, PRIMARY KEY (`CALIBRATION_id`), KEY `fk_CALIBRATION_CONFIG1` (`CONFIG_CONFIG_id`), CONSTRAINT `fk_CALIBRATION_CONFIG1` FOREIGN KEY (`CONFIG_CONFIG_id`) REFERENCES `config` (`CONFIG_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1'
Merci;
Essaie ceci (tu as le droit d'appeler la colonne BDD autrement bien sûr !) :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 -- Suppression de l'auto_increment par redéfinition de la colonne ALTER TABLE calibration CHANGE CALIBRATION_id CALIBRATION_id int(11) NOT NULL; -- Suppression de la clé primaire ALTER TABLE calibration DROP PRIMARY KEY; -- Ajout de la colonne pour identifier la BDD d'où proviennent les données importées ALTER TABLE calibration ADD COLUMN BDD TINYINT NOT NULL; -- Définition de la nouvelle clé primaire ALTER TABLE calibration ADD PRIMARY KEY (BDD, CALIBRATION_id); -- Ajout d'un index sur CALIBRATION_id puisque ce n'est plus la première colonne de la clé primaire ALTER TABLE calibration ADD KEY (CALIBRATION_id);
A l'exécution de la 2éme requête j'ai le message d'erreur suivant :
Code:Error on rename of '.\bdd_site\#sql-570_29a' to '.\bdd_site\calibration' (errno: 150)
C'est pourtant la bonne syntaxe :
Il semble que l'errno: 150 soit due à la présence d'une clé étrangère qui fait référence à la clé primaire de cette table.Citation:
Envoyé par Doc MySQL
Tu peux peut-être essayer de créer d'abord l'index sur la colonne puis supprimer la clé primaire :
Code:
1
2
3
4
5
6
7 -- Ajout d'un index sur CALIBRATION_id puisque ce n'est plus la première colonne de la clé primaire ALTER TABLE calibration ADD KEY (CALIBRATION_id); -- Suppression de la clé primaire ALTER TABLE calibration DROP PRIMARY KEY;
Ca marche, merci beaucoup !
Je te tiendrai au courant quant au script complet !
J'aimerai maintenant créer un script réutilisable, dans lequel je passe le nom de la BDD en variable, est ce possible de mettre ca dans le fichier SQL d'insertion vers la BDD commune ?