Création d'une table avec MySQL

Résolu/Fermé
AWare - 2 juin 2009 à 17:52
 le père - 3 juin 2009 à 22:53
Bonsoir,

dans une base de donnée MySQL j'ai crée la table suivante:

CREATE TABLE IF NOT EXISTS `egw_emailadmin` (
`ea_profile_id` int(11) NOT NULL auto_increment,
`ea_smtp_server` varchar(80) default NULL,
`ea_smtp_type` int(11) default NULL,
`ea_smtp_port` int(11) default NULL,
`ea_smtp_auth` varchar(3) default NULL,
`ea_editforwardingaddress` varchar(3) default NULL,
`ea_smtp_ldap_server` varchar(80) default NULL,
`ea_smtp_ldap_basedn` varchar(200) default NULL,
`ea_smtp_ldap_admindn` varchar(200) default NULL,
`ea_smtp_ldap_adminpw` varchar(30) default NULL,
`ea_smtp_ldap_use_default` varchar(3) default NULL,
`ea_imap_server` varchar(80) default NULL,
`ea_imap_type` int(11) default NULL,
`ea_imap_port` int(11) default NULL,
`ea_imap_login_type` varchar(20) default NULL,
`ea_imap_tsl_auth` varchar(3) default NULL,
`ea_imap_tsl_encryption` varchar(3) default NULL,
`ea_imap_enable_cyrus` varchar(3) default NULL,
`ea_imap_admin_user` varchar(40) default NULL,
`ea_imap_admin_pw` varchar(40) default NULL,
`ea_imap_enable_sieve` varchar(3) default NULL,
`ea_imap_sieve_server` varchar(80) default NULL,
`ea_imap_sieve_port` int(11) default NULL,
`ea_description` varchar(200) default NULL,
`ea_default_domain` varchar(100) default NULL,
`ea_organisation_name` varchar(100) default NULL,
`ea_user_defined_accounts` varchar(3) default NULL,
`ea_imapoldcclient` varchar(3) default NULL,
`ea_order` int(11) default NULL,
`ea_appname` varchar(80) default NULL,
`ea_group` varchar(80) default NULL,
`ea_smtp_auth_username` varchar(80) default NULL,
`ea_smtp_auth_password` varchar(80) default NULL,
PRIMARY KEY (`ea_profile_id`,
KEY `ea_appname`,
KEY `ea_group` )
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2)


Voici le resultat:

#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 'KEY `ea_appname`, KEY `ea_group` ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AU' at line 36

Je ne comprend pas mon erreur , pouvez vous m'eclaircir?
A voir également:

9 réponses

mickaelm30 Messages postés 218 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 4 mai 2011 12
3 juin 2009 à 09:42
PRIMARY KEY (`ea_profile_id`,
KEY `ea_appname`,
KEY `ea_group` )

c'est plutot

PRIMARY KEY('ea_profile_id','ea_appname','ea_group')
1
Bonjour,

je relance le sujet de mon problème, n'ayant toujours pas réussi à le résoudre.
0
VieTgOOx Messages postés 160 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 9 janvier 2011 26
3 juin 2009 à 09:18
Je ne vois pas le ";" de fin de toute requête ?
0
Merci pour ta réponse,

j'ai donc rajouter le " ; " et lors de la compilation j'ai reçu le même message d'erreur que précedemment.
0

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

Posez votre question
Bonjour mickaelm30 ,

voici la requête que j'ai donc écrite :

CREATE TABLE IF NOT EXISTS `egw_emailadmin` (
`ea_profile_id` int(11) NOT NULL auto_increment,
`ea_smtp_server` varchar(80) default NULL,
`ea_smtp_type` int(11) default NULL,
`ea_smtp_port` int(11) default NULL,
`ea_smtp_auth` varchar(3) default NULL,
`ea_editforwardingaddress` varchar(3) default NULL,
`ea_smtp_ldap_server` varchar(80) default NULL,
`ea_smtp_ldap_basedn` varchar(200) default NULL,
`ea_smtp_ldap_admindn` varchar(200) default NULL,
`ea_smtp_ldap_adminpw` varchar(30) default NULL,
`ea_smtp_ldap_use_default` varchar(3) default NULL,
`ea_imap_server` varchar(80) default NULL,
`ea_imap_type` int(11) default NULL,
`ea_imap_port` int(11) default NULL,
`ea_imap_login_type` varchar(20) default NULL,
`ea_imap_tsl_auth` varchar(3) default NULL,
`ea_imap_tsl_encryption` varchar(3) default NULL,
`ea_imap_enable_cyrus` varchar(3) default NULL,
`ea_imap_admin_user` varchar(40) default NULL,
`ea_imap_admin_pw` varchar(40) default NULL,
`ea_imap_enable_sieve` varchar(3) default NULL,
`ea_imap_sieve_server` varchar(80) default NULL,
`ea_imap_sieve_port` int(11) default NULL,
`ea_description` varchar(200) default NULL,
`ea_default_domain` varchar(100) default NULL,
`ea_organisation_name` varchar(100) default NULL,
`ea_user_defined_accounts` varchar(3) default NULL,
`ea_imapoldcclient` varchar(3) default NULL,
`ea_order` int(11) default NULL,
`ea_appname` varchar(80) default NULL,
`ea_group` varchar(80) default NULL,
`ea_smtp_auth_username` varchar(80) default NULL,
`ea_smtp_auth_password` varchar(80) default NULL,
PRIMARY KEY('ea_profile_id','ea_appname','ea_group')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


et voici le message d'erreur qui s'affiche maintenant:

#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 'KEY `ea_appname`, KEY `ea_group` ) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO' at line 36


Que faire?
0
Que faire?

1 - ne pas poster en double, tu as déjà la même question sur le forum programmation
2 - ne pas fournir de fausses informations, la requête que tu donnes dans le message 5 ne peut en AUCUN CAS conduire au message d'erreur que tu indiques
0
VieTgOOx Messages postés 160 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 9 janvier 2011 26
3 juin 2009 à 11:21
Si le père le dit, c'est que c'est vrai ^^ ! J'ai confiance en notre père! Mouahaha je craque faut que j'arrête de coder je fais des blagues de merde...

Vous savez comment on fait la guerre en algorithme? ...

Non?...

Avec des Tant Que.........(tank) ...XD

Non plus sérieusement, je vois pas du tout d'où viens ton problème et le père a surement raison d'après ce que j'ai pu voir jusque là il s'y connait plutôt bien. Même très bien =) !

Bref, j'vais me chercher un café moi pour me calmer.

Bonne continuation.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 juin 2009 à 11:45
j'ai trouvé ça sur ce site:

http://tecfa.unige.ch/guides/mysql/fr-man/manuel_CREATE_TABLE.html

Avec MySQL, l'attribut PRIMARY KEY est identique à l'attribut KEY qui porterait le nom de PRIMARY Une table ne peut avoir qu'une seule colonne avec l'attribut table PRIMARY KEY. Si aucune colonne n'a de PRIMARY KEY et qu'une application requiert la colonne de PRIMARY KEY, MySQL retournera la première colonne ayant l'attribut UNIQUE.
0
Il ne peut pas y avoir plusieurs colonnes ayant chacune individuellement l'attribut PRIMARY KEY, mais l'attribut PRIMARY KEY peut être multicolonnes ! C'est à dire que PRIMARY KEY('ea_profile_id','ea_appname','ea_group') est parfaitement légal.
Je lis la doc dont tu donnes le lien. En début de page, dans la syntaxe de CREATE, on lit ... PRIMARY KEY (index_Nom_col,...) ... et plus loin
Une PRIMARY KEY peut être un index multi colonne

De plus, j'ai essayé ...
http://www.commentcamarche.net/forum/affich 12706238 mysql create table#14
0