Non, je suis en alternance c'est pour ça ... Je rebosse dessus depuis le début de la semaine, j'ai testé tes bouts de code et ca veut pas passer apparament !
Non, je suis en alternance c'est pour ça ... Je rebosse dessus depuis le début de la semaine, j'ai testé tes bouts de code et ca veut pas passer apparament !
Soit.
Symptômes ?la partie remplissage de la BDD3 à partir de BDD 1 et 2 fonctionne pas
- Pas de données insérées ?
- Message d'erreur ?
- 40° de fièvre ?
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Message d'erreur:
La table existe bien ... !
Code : Sélectionner tout - Visualiser dans une fenêtre à part Unknown column 'bdd3.calib_name' in 'where clause'
Je suppose que c'est cette requête qui donne le message d'erreur ?
bdd_3 est le nom de la base de données, pas celui de la table où pourrait se trouver la colonne calib_name !
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 USE bdd_3; INSERT INTO bdd_3.calib SELECT * FROM bdd_2.calib WHERE NOT EXISTS ( SELECT 1 FROM bdd_3.calibration WHERE bdd_3.calib_name = bdd2.calib_name AND bdd_3.calib_tol = bdd_2.calib_tol AND bdd_3.calib_time = bdd_2.calib_time );
Il y a quand même un truc qui m'étonne : tu insères dans une table appelée calib les lignes qui n'existent pas dans une table calibration.
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 USE bdd_3; INSERT INTO bdd_3.calib SELECT * FROM bdd_2.calib c2 WHERE NOT EXISTS ( SELECT 1 FROM bdd_3.calibration c3 WHERE c3.calib_name = c2.calib_name AND c3.calib_tol = c2.calib_tol AND c3.calib_time = c2.calib_time );
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Tu m'as perdu là ! Je regarde et je reviens. Et merci pour l'aide.
Le but est de copier uniquement les lignes non existantes dans BDD3. J'ai pas trop compris comment m'y prendre. A quoi correspondes c2 et c3? (Au fait la table s'appele calibration, ils ont la même structure...)
Tu as dit que les 3 BDD avaient la même structure.
Si tu veux insérer des lignes non encore existantes dans bdd3.calib, il faut que tu prennes les données dans bdd2.calib et que tu vérifies si elle n'existent pas déjà dans bdd3.calib.
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Dans ton code, a quoi correspond c3 et c2 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 USE bdd_3; INSERT INTO bdd_3.calib SELECT * FROM bdd_2.calib c2 WHERE NOT EXISTS ( SELECT 1 FROM bdd_3.calib c3 WHERE c3.calib_name = c2.calib_name AND c3.calib_tol = c2.calib_tol AND c3.calib_time = c2.calib_time );
Ce sont des alias qui évitent de répéter le nom de la table.
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
J'ai toujours un problème :
j'ai le message d'erreur suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 use bdd3 INSERT INTO bdd3.calib SELECT * FROM bdd2.calib bdd2 WHERE NOT EXISTS ( SELECT 1 FROM bdd3.calib bdd3 WHERE bdd3.calib_name = bdd2.calib_name AND bdd3.calib_tole = bdd2.calib_tole );
Merci,
Code : Sélectionner tout - Visualiser dans une fenêtre à part Table 'ultime_2.calib' doesn't exist
Ca vient de fonctionner (sans comparaison des champs), est il nécessaire de comparer les champs sachant que j'ai des clés primaires et étrangère dans plusieurs tables ?
Le message est clair : la requête tente d'utiliser une table qui n'existe pas. Comme la base de données ultime_2 n'est pas citée dans la requête que tu postes, soit ce n'est pas cette requête qui génère l'erreur, soit tu ne postes pas la requête réelle qui provoque l'erreur.j'ai le message d'erreur suivant:
TABLE 'ultime_2.calib' doesn't exist
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
C'est les noms des bases au fait que j'avais changé.
Donne donc la vraie requête qui provoque l'erreur !
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Vous me conseillez un script batch/sql ou bien l'utilisation d'un logiciel pour la fusion des BDD (on peut avoir de nouvelles BDD et le probléme du script c'est qu'il faudra ajouter des lignes de codes dans ce cas ...). Si le logiciel me permettra de réaliser cela plus rapidement, vous conseiller quelle logiciel ?
Pourra t-on automatiser la tâche de fusion des BDD ?
Merci beaucoup!
Parce qu'au fait, j'ai le message d'erreur suivant :
Pourtant dans bdd3 j'ai ajouter une valeur à config_id à l'identique de bdd2 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cannot add or update a child row: a foreign key constraint fails (`bdd3`.`calibration`, CONSTRAINT `fk_CALIBRATION_CONFIG1` FOREIGN KEY (`CONFIG_CONFIG_id`) REFERENCES `config` (`CONFIG_id`) ON DELETE CASCADE ON UPDATE CASCADE)
Un nouveau soucis (pour les précédents ca c'est amélioré) , j'ai l'erreur suivante :
Au fait sur la BDD2 j'ai une ligne avec une clés primaire 3 et sur la BDD3 j'ai déjà une ligne avec l'id 3 mais ce ne sont pas les mêmes informations ... Il refuse d'importer la ligne de la BDD2 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part Duplicate entry '3' for key 'PRIMARY'
Merci beaucoup!
L'idéal serait d'importer dans bdd3 uniquement les champs suivants la clés primaires, (la clés primaires s'incrémente toute seules de toute façons), je ne vois pas comment faire ?
J'ai remplacé l'étoile par les champs (sauf la clés primaire) mais je suis obligé de taper le champs id apparament sinon j'ai erreur du type (count culomn ...)
Merci beaucoup!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO bdd3.config SELECT * FROM bdd2.config bdd2
Personne ?
J'ai deux BDD de même structure, le but est d'importer les données de la 1ére BDD dans la 2éme, pour éviter les doublons j'aimerai donc ne pas copier le champs _id (clés primaires) des tables, c'est possible ?
Ma requêtes pour l'instant :
J'avais penser à mettre à la place de l'étoile les collones suivant la clés primaire mais j'ai un message d'erreur (count colonm) ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO bdd3.config SELECT * FROM bdd2.config bdd2
Merci de m'aider !!!
Pourquoi ne pas utiliser les mécanismes de réplication proposés par MySQL ? C'est fait justement pour aller répliquer les données sur d'autres serveurs, donc tu peux le faire en local.
Documentation
Olivier Pitton
Site personnel : http://site.olivier-pitton.eu.cloudbees.net/
Page Developpez : http://olivier-pitton.developpez.com/
Au fait, chaque PC a une BDD en local (obligatoirement car les PC ne sont pas forcement connectés au réseau donc pas de maitre serveur ...), je voudrais donc créer une BDD sur mon poste avec les résultats des BDD locales ...
J'ai donc penser à importer les BDD locales régulièrement sur mon poste et envoyer ensuite les lignes vers la BDD centralisés (elle aussi sur mon poste) cependant j'aimerai éviter les doublons en n'envoyant pas la clés primaire ..;
J'ai penser à la requête précedente mais ça ne fonctionne pas, à la place de l'étoile je ne peux pas mettre les collones suivant la clés primaire ! Une idée parce que je galére vraimment sur ce sujet !!!
Merci beaucoup
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager