Bonjour à tous,
Suite à un crash serveur avec Debian 4 (Etch), j’en ai profité pour passer à la version 5 de Debian.
En remettant mes sites en place je me vois faire face à différents problème que je corrige petit à petit.
Mais le problème qui m’inquiète le plus est en rapport avec MySQL.
En effet entre les deux versions de Debian, la version de MySQL n’est pas exactement la même.
Et bizarrement ( ? ) j’ai notamment repéré la fonction NOW() qui n’est pas exactement la même ! Je m’explique.
J’ai une table comme celle-ci où on peut y voir le champ date_compte de type date et en index unique.
CREATE TABLE IF NOT EXISTS `compte` (
`ID_compte` int(10) unsigned NOT NULL auto_increment,
`date_compte` date NOT NULL,
`compte` int(10) unsigned NOT NULL,
PRIMARY KEY (`ID_compte`),
UNIQUE KEY `date_compte` (`date_compte`)
);
Pour ajouter une entrée où la modifier je fais cette requête (avec la fonction NOW() de MySQL) :
NSERT INTO compte (date_compte, compte) VALUES(NOW(), 1)
ON DUPLICATE KEY UPDATE compte=compte+1;
Pour cette partie tout se passe très bien. Malgré que NOW() renvoi un datetime si la date est la même alors MySQL fait un update.
Cependant là où sa se complique, c’est pour la lecture de donnée à partir du champ date_compte.
Avec la version 4 de Debian je faisais cette requête :
Désormais avec la version 5 de Debian, je me retrouve avec aucune entrée.
Je suis donc pour l’instant obligé de faire comme ceci :
Là où je m’inquiète c’est que je travail pas mal avec la fonction NOW() sur mes différents sites. Ce qui m’oblige actuellement à modifier toutes mes requêtes.
La question que je me pose c’est de savoir si le nouveau comportement de MySQL avec la fonction NOW() est normal où s’il s’agit d’un bug.