Probleme mysql

darhkan -  
 Joe -
Bonjour,
je débute en mysql je dois creer une base de données assez simple malheureusement je n'y arrive pas et je ne sais pas d'ou vient mon erreur.
Dans mon MCD j'ai deux tables avec une relation 1,n j'ai donc créer une 3e table qui fait le lien ca donne ça:

drop database if exists Projet;
create database Projet;
use Projet
create table utilisateurs(
uti_id smallint unsigned not null auto_increment primary key,
uti_nom varchar(2000),
uti_numIBouton varchar(2000),
poste_id smallint unsigned not null,
foreign key(poste_id) references postes(poste_id)
)engine=innodb;

create table postes(
poste_id smallint unsigned not null auto_increment primary key,
poste_addrIp varchar(2000),
uti_id smallint unsigned not null,
foreign key(uti_id) references utilisateurs(uti_id)
)engine=innodb;

create table controler(
uti_id smallint unsigned not null,
poste_id smallint unsigned not null,
primary key(uti_id, poste_id)
)engine=innodb;

insert into postes
(poste_addrIp)
values
("192.168.10.131");

insert into utilisateurs
(uti_nom, uti_numIBouton)
values
("thomas", "A0006460F4A40F");

Le probleme se présente lorsque j'ajoute les clé etrangère dans les tables j'ai ce message d'erreur :
ERROR 1146 (42S02): Table 'projet.utilisateurs' doesn't exist
ERROR 1146 (42S02): Table 'projet.postes' doesn't exist

6 réponses

darhkan
 
up
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Tu veux dire c'est quand tu fais les insert que ça ne passe pas c'est ça?
0
Joe
 
Tes tables utilisateurs et postes se référencent mutuellement. Tu as une grosse erreur de conception !
0
darhkan
 
En gros j'ai une table utilisateurs et une table postes, dans le MCD elles ont toutes les deux une relation 1,n je dois donc creer une troisieme table qui correspond au verbe utiliser qui est dans ce cas : controler.
L'id de l'utilisateur et l'id du poste doivent etre referencés dans la table controler.
Mais je ne m'en sort pas avec les clé etrangere...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
darhkan
 
C'est donc normal que mes se referencent mutuellement car une troisieme table est créée
0
Joe
 
Non ce n'est pas normal :)

Voilà la correction:

create table utilisateurs(
uti_id smallint unsigned not null auto_increment primary key,
uti_nom varchar(2000),
uti_numIBouton varchar(2000)
)engine=innodb;

create table postes(
poste_id smallint unsigned not null auto_increment primary key,
poste_addrIp varchar(2000)
)engine=innodb;

create table controler(
uti_id smallint unsigned not null,
poste_id smallint unsigned not null,
primary key(uti_id, poste_id)
)engine=innodb;
0