Erreur mysql

Résolu
Signaler
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007
-
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007
-
CREATE
TABLE
`basereseau`
(




`nbacces`
int
(
5
)
NOT
NULL
,




`license`
varchar
(
20
)
NOT
NULL
default
''
,




`typeinst`
varchar
(
20
)
NOT
NULL
default
''
,




`nbaccesteams`
varchar
(
20
)
NOT
NULL
default
''
,




`lienbr`
int
(
20
)
NOT
NULL
,




`id_br`
int
(
20
)
NOT
NULL
AUTO_INCREMENT
,




PRIMARY
KEY
(
`id_br`
)


FOREIGN
KEY
(
`lienbr`
)
REFERENCE
client
(


`lienclt`


)




)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
latin1
AUTO_INCREMENT
=
5
;






MySQL a répondu:
http://dev.mysql.com/doc/refman/5.0/fr/error-messages-server.html


#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'FOREIGN KEY (`lienbr`) REFERENCE client(`lienclt`)

) ENGINE =InnoDB DEFAULT CHAR' at line 9

kk1 pouré me dire comment corriger l'erreur ??  

17 réponses

Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
http://dev.mysql.com/doc/refman/5.0/fr/innodb-foreign-key-constraints.html

C'est drole parce que même moi, j'arrive à comprendre ce qui est marqué !

[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
[ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]

 #1005 - Can't create table '.\projetbeta\basereseau.frm' (errno: 150)

Si MySQL vous retourne une numéro d'erreur 1005 lors de la
comande
CREATE TABLE
, et un message d'erreur
de numéro 150, alors la création de la table a échoué à
cause de la contrainte de clé étrangère, qui n'a pas été
correctement formulée. Similairement, si une commande
ALTER TABLE
échoue et indique une erreur
150, c'est que la définition de la clé étrangère est
incorrectement formulée dans la table modifiée. Depuis la
version 4.0.13, vous pouvez utiliser la commande
SHOW
        INNODB STATUS
pour avoir une explication détaillée
de la dernière erreur de clé étrangère
InnoDB
sur le serveur.

CONSTRAINT `lienbt3`
        FOREIGN KEY (`lienbt3`)
        REFERENCES `basereseau` (`lienbr`),
    REFERENCES `client` (`lienclt`),
    REFERENCES `baseteams2` (`lienbt2`),
    REFERENCES `baseteams` (`lienbt`),
    REFERENCES `baseteams4` (`lienbt4`),
    REFERENCES `materiel` (`lienmat`),
    REFERENCES `materiel2` (`lienmat2`),
    REFERENCES `materiel3` (`lienmat3`),
    REFERENCES `materiel4` (`lienmat4`),
    REFERENCES `intervention` (`lienint`),
    REFERENCES `communication` (`liencom`),
    REFERENCES `droitinfo` (`liendroitinf`),
    REFERENCES `rmqint` (`lienrmqint`),
    REFERENCES `rmqclt` (`lienrmqclt`),

C'est tout bonnement IMPOSSIBLE.
J'ai l'impression que tu ne saisie pas comment fonctionne les contraintes la :s

Les contraintes, c'est :
 Clé étrangère <=====> clé primaire
Sur ce que tu viens de mettre, tu fais :
 Clé étrangère <=====> clé primaire, clé primaire, clé primaire, clé primaire ...

Ca n'a aucun sens :s

Regarde le lien.
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

ahah je rerèegle mon pb tout seul =) en fait mes clé étrangère et mes clé primaires n'étaient pa du meme type et de la meme taille et je ne pensais pas que sa soit si important xD
+
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
salut,

il manque une virgule entre la déclaraion de primary key et foreign key
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

il ma pondu sa :

CREATETABLE`basereseau`(
`nbacces`int(5)NOTNULL,
`license`varchar(20)NOTNULLdefault'',
`typeinst`varchar(20)NOTNULLdefault'',
`nbaccesteams`varchar(20)NOTNULLdefault'',
`lienbr`int(20)NOTNULL,
`id_br`int(20)NOTNULLAUTO_INCREMENT,
PRIMARYKEY(`id_br`),
FOREIGNKEY(`lienbr`)REFERENCEclient(
`lienclt`
)
)ENGINE= InnoDBDEFAULTCHARSET=latin1AUTO_INCREMENT=5;

MySQL a répondu: http://dev.mysql.com/doc/refman/5.0/fr/error-messages-server.html

#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'REFERENCE client (`lienclt`)

) ENGINE =InnoDB DEFAULT CHARSET=latin1 AUTO_INCREM' at line 9

je crois l'erreur vien du REFERENCE 
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
IDEM !!!

Une virgule manque entre foreign ... et reference.

... évite de poser ce genre de question sans prendre 30 secondes de réflexion ... merci

A+
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

j'ai mis un S  a reférence... mais maintenant j'ai sa

CREATETABLE`basereseau`(
`nbacces`int(5)NOTNULL,
`license`varchar(20)NOTNULLdefault'',
`typeinst`varchar(20)NOTNULLdefault'',
`nbaccesteams`varchar(20)NOTNULLdefault'',
`lienbr`int(20)NOTNULL,
`id_br`int(20)NOTNULLAUTO_INCREMENT,
PRIMARYKEY(`id_br`),
FOREIGNKEY(`lienbr`)REFERENCESclient(`lienclt`)
)ENGINE=InnoDBDEFAULTCHARSET=latin1AUTO_INCREMENT=5;

MySQL a répondu:http://dev.mysql.com/doc/refman/5.0/fr/error-messages-server.html

#1005 - Can't create table '.\projetbeta\basereseau.frm' (errno: 150)
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

non avec la virgule comme tu dit sa me renvoie a ma précédente erreur...merci de prendre 30 sec de réflexion avant de répondre sa permet d'éviter ce genre d'erreurs
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

j'ai test sa...
ALTER TABLE client ADD FOREIGN KEY (`lienclt`) REFERENCES basereseau(`lienbr`) ON DELETE SET NULL ON UPDATE CASCADE;

toujour la meme erreur...(je précise que j'ai fais un index sur lienclt!!!)
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Ok, tu m'as eu... J'ai pris les 30 secondes :

----- un bout de requête create table ----

    PRIMARY KEY (`id`),
    INDEX `question_FI_1` (`user_id`),
    CONSTRAINT `question_FK_1`
        FOREIGN KEY (`user_id`)
        REFERENCES `sys_user` (`id`)
)Type=MyISAM;
--------------------------------------------------------------------
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

hum merci aucune erreur cependant j'ai pas trop compris  cette histoire d'index
les clé étrangères des autres tables sont stockées dedans c'est sa?
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

Table: ibtest11c
Create Table: CREATE TABLE `ibtest11c` (
`A` int(11) NOT NULL auto_increment,
`D` int(11) NOT NULL default '0',
`B` varchar(200) NOT NULL default '',
`C` varchar(175) default NULL,
PRIMARY KEY (`A`,`D`,`B`),
KEY `B` (`B`,`C`),
KEY `C` (`C`),
CONSTRAINT `0_38775` FOREIGN KEY (`A`, `D`)
REFERENCES `ibtest11a` (`A`, `D`)

si j'ai bien pigé dans cet exemple la table 0_38775 a pour clé étrangère les champs A et D de
ibtest11a
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

personne pour m'éclairer la dessus ?
j'essaye sa

CREATE TABLE `baseteams3` (
  `Type3` varchar(20) NOT NULL default '',
  `Matricule3` varchar(20) NOT NULL default '',
  `Soc3` varchar(20) NOT NULL default '',
  `Profil3` varchar(20) NOT NULL default '',
  `Version3` varchar(20) NOT NULL default '',
  `Repertoire3` varchar(20) NOT NULL default '',
  `lienbt3` int(20) NOT NULL,
  PRIMARY KEY  (`Matricule3`),
  INDEX `baseteams` (`lienbt3`),
  CONSTRAINT `lienbt3`
        FOREIGN KEY (`lienbt3`)
        REFERENCES `basereseau` (`lienbr`),
    REFERENCES `client` (`lienclt`),
    REFERENCES `baseteams2` (`lienbt2`),
    REFERENCES `baseteams` (`lienbt`),
    REFERENCES `baseteams4` (`lienbt4`),
    REFERENCES `materiel` (`lienmat`),
    REFERENCES `materiel2` (`lienmat2`),
    REFERENCES `materiel3` (`lienmat3`),
    REFERENCES `materiel4` (`lienmat4`),
    REFERENCES `intervention` (`lienint`),
    REFERENCES `communication` (`liencom`),
    REFERENCES `droitinfo` (`liendroitinf`),
    REFERENCES `rmqint` (`lienrmqint`),
    REFERENCES `rmqclt` (`lienrmqclt`),
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

si kk1 pouvai me dire si c'est bon ou pas parce que je dois le faire 15 fois...
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

toujours personne ????????
merci de m'avoir répondu avant lundi si vous avez le temps j'ai besoin de comprendre d'ici là
et me faut des exemples concret pas comme sur les aide mysql..
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

euh non meme si la syntaxe est totalement fausse (j'ai réussi depuis le temps...) je n'ai pas fais Clé étrangère <=====> clé primaire, clé primaire, clé primaire, clé primaire ... mais
clé étrangère <=====> entité, entité, entité ect
au final sa me donne sa et j'ai aucun problème

--
-- Contraintes pour la table `materiel4`
--
ALTER TABLE `materiel4`
  ADD CONSTRAINT `materiel4_ibfk_1` FOREIGN KEY (`lienmat4`) REFERENCES `client` (`lienclt`),
  ADD CONSTRAINT `materiel4_ibfk_10` FOREIGN KEY (`lienmat4`) REFERENCES `materiel` (`lienmat`),
  ADD CONSTRAINT `materiel4_ibfk_11` FOREIGN KEY (`lienmat4`) REFERENCES `materiel2` (`lienmat2`),
  ADD CONSTRAINT `materiel4_ibfk_12` FOREIGN KEY (`lienmat4`) REFERENCES `materiel3` (`lienmat3`),
  ADD CONSTRAINT `materiel4_ibfk_2` FOREIGN KEY (`lienmat4`) REFERENCES `basereseau` (`lienbr`),
  ADD CONSTRAINT `materiel4_ibfk_3` FOREIGN KEY (`lienmat4`) REFERENCES `baseteams` (`lienbt`),
  ADD CONSTRAINT `materiel4_ibfk_4` FOREIGN KEY (`lienmat4`) REFERENCES `baseteams2` (`lienbt2`),
  ADD CONSTRAINT `materiel4_ibfk_5` FOREIGN KEY (`lienmat4`) REFERENCES `baseteams3` (`lienbt3`),
  ADD CONSTRAINT `materiel4_ibfk_6` FOREIGN KEY (`lienmat4`) REFERENCES `baseteams4` (`lienbt4`),
  ADD CONSTRAINT `materiel4_ibfk_7` FOREIGN KEY (`lienmat4`) REFERENCES `communication` (`liencom`),
  ADD CONSTRAINT `materiel4_ibfk_8` FOREIGN KEY (`lienmat4`) REFERENCES `droitinfo` (`liendroitinf`),
  ADD CONSTRAINT `materiel4_ibfk_9` FOREIGN KEY (`lienmat4`) REFERENCES `intervention` (`lienint`);

merci quand meme pour ton aide
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

je me corrige tout seul décidement c'est bien de voir ses erreurs lol enfin merci a toi fhx
dans mon dernier exemple je fais clé étrangère<====>clé étrangère, clé étrangère, clé étrangère, ect

thx @+
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
La c'est mieux :p
Messages postés
207
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007

je relance mon problème =p
depuis hier j'essaye de faire clé étrangère<=====>clé primaire
comme sa :

ALTER TABLE `rmqint`
  ADD CONSTRAINT `rmqint_ibfk_1` FOREIGN KEY (`lienrmqint`) REFERENCES `client` (`id_clt`),
  ADD CONSTRAINT `rmqint_ibfk_2` FOREIGN KEY (`lienrmqint`) REFERENCES `basereseau` (`lienbr`),
  ADD CONSTRAINT `rmqint_ibfk_3` FOREIGN KEY (`lienrmqint`) REFERENCES `baseteams` (`Matricule`),
  ADD CONSTRAINT `rmqint_ibfk_4` FOREIGN KEY (`lienrmqint`) REFERENCES `baseteams2` (`Matricule2`),
  ADD CONSTRAINT `rmqint_ibfk_5` FOREIGN KEY (`lienrmqint`) REFERENCES `baseteams3` (`Matricule3`),
  ADD CONSTRAINT `rmqint_ibfk_6` FOREIGN KEY (`lienrmqint`) REFERENCES `baseteams4` (`Matricule4`),
  ADD CONSTRAINT `rmqint_ibfk_7` FOREIGN KEY (`lienrmqint`) REFERENCES `communication` (`id_com`),
  ADD CONSTRAINT `rmqint_ibfk_8` FOREIGN KEY (`lienrmqint`) REFERENCES `droitinfo` (`id_droitinf`),
  ADD CONSTRAINT `rmqint_ibfk_9` FOREIGN KEY (`lienrmqint`) REFERENCES `intervention` (`Numcacao`),
  ADD CONSTRAINT `rmqint_ibfk_10` FOREIGN KEY (`lienrmqint`) REFERENCES `materiel` (`id_mat`),
  ADD CONSTRAINT `rmqint_ibfk_11` FOREIGN KEY (`lienrmqint`) REFERENCES `materiel2` (`id_mat2`),
  ADD CONSTRAINT `rmqint_ibfk_12` FOREIGN KEY (`lienrmqint`) REFERENCES `materiel3` (`id_mat3`),
  ADD CONSTRAINT `rmqint_ibfk_13` FOREIGN KEY (`lienrmqint`) REFERENCES `materiel4` (`id_mat4`),
  ADD CONSTRAINT `rmqint_ibfk_14` FOREIGN KEY (`lienrmqint`) REFERENCES `rmqclt` (`id_rmqclt`),
  ADD CONSTRAINT `rmqint_ibfk_15` FOREIGN KEY (`lienrmqint`) REFERENCES `images` (`id_img`);

et ce pour toutes mes tables j'ai bien vérifier nivo syntaxe je vois pas d'erreurs
a la fin il me renvoie encore sa
MySQL a répondu:http://dev.mysql.com/doc/refman/4.1/en/error-messages-server.html

#1005 - Can't create table '.\projetbeta\#sql-758_227.frm' (errno: 150)

Alors je demande pour ceux qui pourraient m'expliquer pck je commence a douter xD les clé étrangère doivent se référer aux clé primaires des autres tables non?