Erreur mysql

Résolu
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007 - 8 juin 2007 à 14:03
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007 - 13 juin 2007 à 11:29
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

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
11 juin 2007 à 14:04
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.
3
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
13 juin 2007 à 11:29
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
+
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
8 juin 2007 à 14:43
salut,

il manque une virgule entre la déclaraion de primary key et foreign key
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
8 juin 2007 à 14:52
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 
0

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

Posez votre question
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
8 juin 2007 à 14:58
IDEM !!!

Une virgule manque entre foreign ... et reference.

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

A+
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
8 juin 2007 à 15:03
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)
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
8 juin 2007 à 15:05
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
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
8 juin 2007 à 15:17
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!!!)
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
8 juin 2007 à 15:23
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;
--------------------------------------------------------------------
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
8 juin 2007 à 15:31
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?
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
8 juin 2007 à 15:40
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
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
8 juin 2007 à 16:05
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...
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
8 juin 2007 à 16:38
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..
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
12 juin 2007 à 15:17
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
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
12 juin 2007 à 15:57
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 @+
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
12 juin 2007 à 17:34
La c'est mieux :p
0
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
13 juin 2007 à 10:15
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? 
0
Rejoignez-nous