par
moogli » 15 juin 2011, 11:14
salut,
regarde ton code SQL sur le forum et cela te sautera aux yeux
tu utilise comme nom de colonne le clef clef KEY, donc (et c'est normal) mysql ne sait pas ce que tu lui demande.
Pour éviter cela tu peut utiliser les "back quote" ` autour des noms de colonne utilsant des mot clef.
DROP TABLE IF EXISTS livre;
CREATE TABLE livre (
id int(6) NOT NULL AUTO_INCREMENT,
contact varchar(255) NOT NULL,
sonom varchar(255) NOT NULL,
pays varchar(255) NOT NULL,
tel varchar(255) NOT NULL,
fax varchar(255) NOT NULL,
email varchar(255) NOT NULL,
titre varchar(255) NOT NULL,
langue varchar(255) NOT NULL,
region text NOT NULL,
auteur varchar(255) NOT NULL,
pub varchar(255) NOT NULL,
`year` varchar(4) NOT NULL,
`'type` text NOT NULL,
isbn varchar(50) NOT NULL,
`KEY` text NOT NULL,
resume text NOT NULL,
file varchar(255) NOT NULL,
www varchar(255) NOT NULL,
`date` date NOT NULL DEFAULT '0000-00-00',
temp tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (id)
);
correction avec les mots clefs "protégés"
en régle général c'est une idée foireuse d'utiliser ce type de nom pour les colonne.
Par exemple la date peut être changé en un nom plus explicte, tel que dateAchat, dateImpression, dateEdition etc etc
pour Key tu aurais simplement pu faire comme pour d'autre et utiliser le mot français (donc clef) si ce mot est pertinant dans la logique des utilisateurs).
D'ailleur cette clef est je pense, la référence désignant le livre dans le système de classement ? (le truc que l'on trouve en général sur le flanc ?) si oui cette clef est normalement unique et donc pourrait te servir de clef primaire

(bon dans ce cas c'est a atoi de la gérer mais a près tous quand tu ajoute le livre tu ajoute bien la clef
Globalement avoir des noms de colonne explicte permet de mieux s'y retrouver quand on se replonge dans le code (que ce soit toi ou pas, surtout dans le second cas d'ailleurs

).
@+
salut,
regarde ton code SQL sur le forum et cela te sautera aux yeux ;)
tu utilise comme nom de colonne le clef clef KEY, donc (et c'est normal) mysql ne sait pas ce que tu lui demande.
Pour éviter cela tu peut utiliser les "back quote" ` autour des noms de colonne utilsant des mot clef.
[sql]
DROP TABLE IF EXISTS livre;
CREATE TABLE livre (
id int(6) NOT NULL AUTO_INCREMENT,
contact varchar(255) NOT NULL,
sonom varchar(255) NOT NULL,
pays varchar(255) NOT NULL,
tel varchar(255) NOT NULL,
fax varchar(255) NOT NULL,
email varchar(255) NOT NULL,
titre varchar(255) NOT NULL,
langue varchar(255) NOT NULL,
region text NOT NULL,
auteur varchar(255) NOT NULL,
pub varchar(255) NOT NULL,
`year` varchar(4) NOT NULL,
`'type` text NOT NULL,
isbn varchar(50) NOT NULL,
`KEY` text NOT NULL,
resume text NOT NULL,
file varchar(255) NOT NULL,
www varchar(255) NOT NULL,
`date` date NOT NULL DEFAULT '0000-00-00',
temp tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (id)
);
[/sql]
correction avec les mots clefs "protégés"
en régle général c'est une idée foireuse d'utiliser ce type de nom pour les colonne.
Par exemple la date peut être changé en un nom plus explicte, tel que dateAchat, dateImpression, dateEdition etc etc
pour Key tu aurais simplement pu faire comme pour d'autre et utiliser le mot français (donc clef) si ce mot est pertinant dans la logique des utilisateurs).
D'ailleur cette clef est je pense, la référence désignant le livre dans le système de classement ? (le truc que l'on trouve en général sur le flanc ?) si oui cette clef est normalement unique et donc pourrait te servir de clef primaire ;) (bon dans ce cas c'est a atoi de la gérer mais a près tous quand tu ajoute le livre tu ajoute bien la clef ;)
Globalement avoir des noms de colonne explicte permet de mieux s'y retrouver quand on se replonge dans le code (que ce soit toi ou pas, surtout dans le second cas d'ailleurs ;)).
@+