Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2007, 03h15   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 5
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : novembre 2006
Messages : 5
Points : 1
Points : 1
Par défaut problème de création de table

Bonjour, j'essaie de créer une table d'association bien simple avec le script suivant :
Code :
1
2
3
4
5
6
7
8
 
CREATE TABLE  `cd` (
  `c` int(10) UNSIGNED NOT NULL,
  `d` int(10) UNSIGNED NOT NULL,
  PRIMARY KEY  (`c`,`d`),
  CONSTRAINT `FK_cd_2` FOREIGN KEY (`d`) REFERENCES `d` (`id`),
  CONSTRAINT `FK_cd_1` FOREIGN KEY (`c`) REFERENCES `c` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Tout semble se créer comme il faut mais lorsque je fait afficher le code de création de la table avec MySQL Query Browser, j'obtient le code suivant :
Code :
1
2
3
4
5
6
7
8
9
10
 
DROP TABLE IF EXISTS `test`.`cd`;
CREATE TABLE  `test`.`cd` (
  `c` int(10) UNSIGNED NOT NULL,
  `d` int(10) UNSIGNED NOT NULL,
  PRIMARY KEY  (`c`,`d`),
  KEY `FK_cd_2` (`d`),  -- ????
  CONSTRAINT `FK_cd_1` FOREIGN KEY (`c`) REFERENCES `c` (`id`),
  CONSTRAINT `FK_cd_2` FOREIGN KEY (`d`) REFERENCES `d` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
La ligne "KEY `FK_cd_2` (`d`)," est ajoutée et m'empêche d'entrer mes données correctement.

Est-ce que c'est un bug connu ? Comment faire pour que ma table se crée comme demandé ?

merci de votre aide
/*Mr.D*/ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2007, 21h56   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Chaque contrainte de clé étrangère s'appuie sur un index de chaque côté, donc la ligne KEY `FK_cd_2` (`d`) est normale ; comme c'est n'est ni une PRIMARY KEY ni une UNIQUE KEY, elle ne doit pas te poser de problème.

Tes problèmes viennent plutôt de la clé primaire (c, d)... elle est apparue spontanément ou elle vient de toi ?
Dans les deux cas, la solution est de la supprimer et de la remplacer par un index simple sur `c`.
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2007, 22h14   #3
Invité de passage
 
Inscription : novembre 2006
Messages : 5
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : novembre 2006
Messages : 5
Points : 1
Points : 1
Oops, j'avais mal écris ma première requête. J'avais moi-même défini la clé primaire.

Je ne suis pas certain de comprendre ton point :
Citation:
la solution est de la supprimer et de la remplacer par un index simple sur `c`.
qu'est-ce que ça va changer ?

merci
/*Mr.D*/ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2007, 22h21   #4
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Prennons les choses d'un autre côté... quelles sont les données que tu n'arrives pas à rentrer, et quel message d'erreur obtiens-tu ?
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2007, 22h36   #5
Invité de passage
 
Inscription : novembre 2006
Messages : 5
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : novembre 2006
Messages : 5
Points : 1
Points : 1
Je viens de trouver le problème. C'étais ma requête d'insertion de données.
J'essayais d'inséré une valeur dans ma table d'association qui n'étais pas encore dans ma table.



merci quand même de ton aide
/*Mr.D*/ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h41.


 
 
 
 
Partenaires

Hébergement Web