Bonsoir,
lorsqu'on déclare un identifiant relatif, la conséquence sur le script SQL de la création de la table associée est que :
1- la clé primaire est composée de 2 colonnes : les identifiants des 2 tables ;
2- la table concernée comporte un attribut déclaré comme clé étrangère vers l'autre table.
Souci : cet attribut-FK est placé avant l'attribut-identifiant, d'où message d'erreur :Bug vu sous MySQLWorkbench.Error Code: 1075. Incorrect table definition; there can be only one auto column and it must be defined as a key
Si on déplace l'attribut-identifiant au début du script de déclaration de la table, le message d'erreur disparaît.
Pour éviter ce bug, il serait souhaitable de placer la clé primaire de la classe d'entité en premier dans le script SQL de création de la table SQL correspondante.
EDIT1 : pour reproduire le bug, il faut déclarer la clé primaire en AUTO_INCREMENT
EDIT2 : pour reproduire :
Pour supprimer le message d'erreur, il faut :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE TABLE classB( B_ident INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(B_ident) ); CREATE TABLE classA( B_ident INT UNSIGNED, a_ident INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(B_ident, a_ident), FOREIGN KEY(B_ident) REFERENCES classB(B_ident) );
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE TABLE classB( B_ident INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(B_ident) ); CREATE TABLE classA( a_ident INT UNSIGNED AUTO_INCREMENT, B_ident INT UNSIGNED, PRIMARY KEY(B_ident, a_ident), FOREIGN KEY(B_ident) REFERENCES classB(B_ident) );
Partager