MYSQL bug ou pas ?

Mammouth du PHP | 804 Messages

09 juin 2007, 23:51

Bonjour,

J'ai rencontré un souci sur une table, j'ai utilisé le mot force pour nommé un champ, ensuite impossible d'utiliser la table avec une requête comme j’en ai fais des milliers, au bout de deux jours après avoir trouvé le problème, suite à divers vérifications éliminatoire !
Je le change par le mot nrj et maintenant impeccable.

Un bug mysql ou un mot interdit :?:

J’ai trouvé ce problème tellement étrange que j'aimerai savoir si c’est uniquement sur mon serveur que ça donne cette erreur !

config:
Version MySQL 4.1.20
phpMyAdmin 2.6.4-pl3

merci d'avance !

Eléphant du PHP | 199 Messages

09 juin 2007, 23:58

Surement un mot utilisé par MySQL. Dans ce cas tu as juste à mettre le nom du champs entre backticks `force`. Le mieux étant bien sûr de ne pas utiliser de mots interdits.
Klomac - Blog Lambda

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

10 juin 2007, 00:00

impossible d'utiliser la table avec une requête comme j’en ai fais des milliers
...et le message d'erreur c'était quoi ?

Mammouth du PHP | 804 Messages

10 juin 2007, 00:42

aucune erreurs Hubert Roksor
je ne pouvais plus insérer ou mettre à jour la base si j'utilisais le champs dans une requête

sinon Klomac je vais plutôt suivre ton conseil et utiliser un autre nom !

Eléphant du PHP | 124 Messages

10 juin 2007, 02:22

http://dev.mysql.com/doc/refman/5.0/fr/ ... words.html

Les mots suivants sont explicitement réservés en MySQL. La plupart sont interdits par ANSI SQL92 en tant que nom de colonnes ou de tables (par exemple, GROUP). Quelques uns sont réservés parce que MySQL en a besoin et utilise (actuellement) un analyseur yacc :

Code : Tout sélectionner

ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHARACTER CHECK COLLATE COLUMN CONDITION CONSTRAINT CONTINUE CONVERT CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR DATABASE DATABASES DAY_HOUR DAY_MICROSECOND DAY_MINUTE DAY_SECOND DEC DECIMAL DECLARE DEFAULT DELAYED DELETE DESC DESCRIBE DETERMINISTIC DISTINCT DISTINCTROW DIV DOUBLE DROP DUAL EACH ELSE ELSEIF ENCLOSED ESCAPED EXISTS EXIT EXPLAIN FALSE FETCH FLOAT FLOAT4 FLOAT8 FOR FORCE FOREIGN FROM FULLTEXT GRANT GROUP HAVING HIGH_PRIORITY HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND IF IGNORE IN INDEX INFILE INNER INOUT INSENSITIVE INSERT INT INT1 INT2 INT3 INT4 INT8 INTEGER INTERVAL INTO IS ITERATE JOIN KEY KEYS KILL LEADING LEAVE LEFT LIKE LIMIT LINES LOAD LOCALTIME LOCALTIMESTAMP LOCK LONG LONGBLOB LONGTEXT LOOP LOW_PRIORITY MATCH MEDIUMBLOB MEDIUMINT MEDIUMTEXT MIDDLEINT MINUTE_MICROSECOND MINUTE_SECOND MOD MODIFIES NATURAL NOT NO_WRITE_TO_BINLOG NULL NUMERIC ON OPTIMIZE OPTION OPTIONALLY OR ORDER OUT OUTER OUTFILE PRECISION PRIMARY PROCEDURE PURGE RAID0 READ READS REAL REFERENCES REGEXP RELEASE RENAME REPEAT REPLACE REQUIRE RESTRICT RETURN REVOKE RIGHT RLIKE SCHEMA SCHEMAS SECOND_MICROSECOND SELECT SENSITIVE SEPARATOR SET SHOW SMALLINT SONAME SPATIAL SPECIFIC SQL SQLEXCEPTION SQLSTATE SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT SSL STARTING STRAIGHT_JOIN TABLE TERMINATED THEN TINYBLOB TINYINT TINYTEXT TO TRAILING TRIGGER TRUE UNDO UNION UNIQUE UNLOCK UNSIGNED UPDATE USAGE USE USING UTC_DATE UTC_TIME UTC_TIMESTAMP VALUES VARBINARY VARCHAR VARCHARACTER VARYING WHEN WHERE WHILE WITH WRITE X509 XOR YEAR_MONTH ZEROFILL


Voici de nouveaux mots réservés en MySQL : 5.0:

Code : Tout sélectionner

ASENSITIVE CALL CONDITION CONTINUE CURSOR DECLARE DETERMINISTIC EACH ELSEIF EXIT FETCH INOUT INSENSITIVE ITERATE LEAVE LOOP MODIFIES OUT READS RELEASE REPEAT RETURN SCHEMA SCHEMAS SENSITIVE SPECIFIC SQL SQLEXCEPTION SQLSTATE SQLWARNING TRIGGER UNDO WHILE

Mammouth du PHP | 804 Messages

10 juin 2007, 15:23

merci je garde cette liste sous la main :wink: