En vue de préparer l'année prochaine, je viens d'installer une version local de wamp sur mon ordi pour travailler sur la base de données.
J'ai exporter la base de cette année à partir du serveur de prod et importé cette base sur mon ordi via PhpMyAdmin et compte la nettoyer + la mettre à jour pour la nouvelle version de VT.
Le souci est losrque j'essaie de me connecter via VT_reseau j'ai le message : MYSQL error Code (1292) : Incorrect datetime value : '0000-00-00 00:00:00' from column 'dateDeconnexion' at row 1
Or, je n'ai jamais eu ce message sur le serveur ?
Quelqu'un a-t-il une idée ?
J'ai bien vu dans la base de données que dans la table utilisateurs_connexions ce champ apparaissait, j'ai essayé de vider la table (cf. wiki) mais sans succès...
Nombre de posts: 2121 Inscrit(e) le: 20 novembre 2004
vendredi 6 mai 2016 à 16:23
Bonjour François,
Le plus serait de ruser : tu changes la valeur de ce champs pour toute ta table utilisateurs_connexions.
update utilisateurs_connexions set dateDeconnexion = '2020-01-01 01:00:00'
Je viens de vérifier dans mes tables, parfois on trouve la même valeur que la tienne. Cela vient du fait que les utilisateurs ne quittent pas nécessairement VT proprement.
J'avais indiqué quelques modifications à apporter à la base pour éviter qu'il y ait des valeurs par défaut farfelues : ici, dans le forum. Mais je n'ai rien indiqué concernant les tables relatives aux utilisateurs. Il suffit de mettre une valeur par défaut valide dans le champs dateDeconnexion (par exemple '2100-01-01 01:00:00'.
Ce qui me laisse perplexe c'est : 1) que tu n'arrives pas à vider cette table ??? 2) ce champ n'est pas utilisé dans VT mais dans VT_admin
Sylvain
Édité 1 fois - Dernière édition: 06/05/2016 à 16:26 Par sylvain.
Merci pour tes pistes Malheureusement, cela ne fonctionne pas : J'ai un message d'erreur qui m'indique qu'il est impossible de changer les valeurs par défaut. Lorsque je veux changer celle du champ DateConnexion, il me dit que DateDeconnexion est invalide et si je veux changer DateDeconnexion , il me dit que c'est DateConnexion qui ne l'est pas. Bref, je tourne en rond...
Je me suis mal exprimé sinon, j'ai bien réussi à vider la table, mais cela n'avait pas résolu le souci
Au final et après qq recherches sur Google, je viens de désinstaller la dernière version de Wamp (3.x) et j'ai remis une version antérieure 2.4 et... cela fonctionne ??? (Connexion via vt_reseau et la mise à jour des valeurs par défaut de dateConnexion et dateDeconnexion)
Il y aurait-il des changements dans mysql 5.6 -> 5.7 qui pourraient poser ce problème ? À vérifier en tout cas, car cela peut-être gênant pour ceux qui font les mises à jour.
Bonjour, Même pb rencontré à Nice avec mysql 5.7. Nous allons devoir installer la base sur un vieux serveur qui doit être abandonné. Une solution est-elle à l'étude ? Merci
Nombre de posts: 2121 Inscrit(e) le: 20 novembre 2004
lundi 13 juin 2016 à 13:43
Bonjour,
Intrigué par vos demandes, j'ai fini par installer une version 5.7 de mysql et j'ai fait un transfert d'une base VT vers cette nouvelle version. Effectivement des erreurs sont apparues. Elles sont toutes liées à des problèmes de dates. Dans la nouvelle version de mysql il y a un contrôle plus strict sur les dates et en particulier dès qu'il y a une date du genre '0000-00-00', mysql 5.7 n'aime ps du tout ! (et il a bien raison).
Voici donc les modifications que j'ai du faire pour que le transfert se fasse :
calendriers_commentaires -> dans la nouvelle structure de la base, la valeur du champs dateModif peut être de la forme '0000-00-00 00:00:00' si on a utilisé une ancienne base. La valeur de ce champs doit être mise à jour par le SGBD et non pas par VT. Le type de ce champs doit maintenant être timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP. Voici la définition cvomplète de cette table : CREATE TABLE `calendriers_commentaires` ( `codeRessource` int(11) NOT NULL, `commentaire` varchar(100) NOT NULL, `deleted` int(1) NOT NULL, `codeProprietaire` int(11) NOT NULL, `dateModif` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `date` date NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Pour forcer la mise à jour de ce champs après avoir modifier sa définition, il suffit de modifier la valeur d'un champs pour chaque enregistrement. Voici un moyen simple et efficace : On crée un champs de nom xxx et de type int(10). On fait un update calendriers_commentaires set xxx= 1; ce qui provoquera une mise à jour des champs xxx et dateModif. On détruit le champs xxx de la table.
calendriers_enseignements -> la valeur par défaut du champ date ne doit pas être 0000-00-00, il suffit de mettre 3000-01-01 par exempel. Même chose pour les tables calendriers_filieres, calendriers_groupes, calendriers_materiels, calendriers_profs et calendriers_salles.
filieres -> changer la valeur du champs derniereConsultation si elle vaut '0000-00-00 00:00:00' et mettre par exemple '2016_06-01 01:01:01' . Dans la définition de cette table s'assurer que la valeur par défaut du champs 'derniereConsultation' n'est pas '0000-00-00 00:00:00'. Si c'est le cas mettre par exemple '3000-01-01 01:01:01' La valeur par défaut des champs dateDebut et dateFin est '0000-00-00' remplacer par une date valide. Par exemple '2015-01-01'.
grades_ponderations -> changer les valeurs incorrectes de type '0000-00-00 00:00:00' du champ dateCreation par une date valide par exemple '3000-01-01 01:01:01' Dans la définition de cette table, mettre une date valide comme valeur ar défaut du champs dateCreation. Par exemple '3000-01-01 01:01:01'
niveaux -> mettre une valeur valide par défaut dans les champs dateCreation, dateDebut et dateFin. Par exemple : '3000-01-01 01:01:01'. update niveaux set dateDebut = '3000-01-01 01:01:01'; update niveaux set dateFin = '3000-01-01 01:01:01';
periodes -> pour le champ dateCreation mettre une valeur valide par defaut : 3000-01-01 01:01:01 update periodes set dateCreation = '3000-01-01 01:01:01';
reservations -> pour le champs dateDemande mettre une valeur valide par defaut : 3000-01-01 01:01:01 update reservations set dateDemande = '3000-01-01 01:01:01';
reservations_filieres -> pour les champs dateDemande, dateReservation et dateCreation mettre une valeur valide par defaut : 3000-01-01 01:01:01
reservations_historique -> pour les champs dateReservation mettre une valeur valide par defaut : 3000-01-01 01:01:01
seances_historique -> pour les champs dateReservation mettre une valeur valide par defaut : 3000-01-01 01:01:01
utilisateurs_connexions -> pour le champs dateConnexion mettre une valeur valide par defaut : 3000-01-01 01:01:01 pour le champs dateDeconnexion mettre une valeur valide par defaut : 2000-01-01 01:01:01
Attention mettre une date par defaut qui precede celle du champs dateConnexion
Verifier que dans la table utilisateurs_connexions toutes les valeurs des dates sont valides : les changer si besoin.
utilisateurs_filtrages -> mettre une date par defaut valide pour le champs dateCreation. Il faut que le champs dateModif soit mis à jour lors des modification (on update current_timestamp). Ceci est d'ailleurs valadble pour le champs dateModif de toutes les tables. Verifier que les dates sont valides dans la table.
Il faudra que je prévoie les scripts qui permettront à chacun de mettre à jour sa base sans trop d'efforts. Sylvain
J'ai supprimé et recréé la table utilisateurs_connexions. DROP TABLE IF EXISTS `utilisateurs_connexions`; CREATE TABLE `utilisateurs_connexions` ( `codeUtilisateur` int(11) NOT NULL DEFAULT '0', `dateConnexion` datetime NOT NULL DEFAULT '3000-01-01 01:01:01', `dateDeconnexion` datetime NOT NULL DEFAULT '2000-01-01 01:01:01', `ip` varchar(255) NOT NULL DEFAULT '', `numeroSession` int(11) NOT NULL AUTO_INCREMENT, `dateModif` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `adresseMac` varchar(20) NOT NULL, PRIMARY KEY (`numeroSession`) ) ENGINE=InnoDB AUTO_INCREMENT=133912 DEFAULT CHARSET=latin1;
Malgré cela, le pb de connexion persiste. Le même message apparait toujours : Incorrect datetime value : '0000-00-00 00:00:00' from column 'dateDeconnexion' at row 1
Pourtant, si dans la base, on exécute par ex: insert into utilisateurs_connexions(codeUtilisateur,ip, numeroSession,adresseMac) VALUES (855,'134.59.200.12',2,'34-17-EB-BB-8A-B3' ; les valeurs par défaut sont bien affectées sur les zones dates
Nombre de posts: 2121 Inscrit(e) le: 20 novembre 2004
mardi 14 juin 2016 à 22:59
Bonjour, Je viens d'aller faire un tour dans les sources de VT : c'est ma faute car j'essaie d'inserrer une date nulle. 100000000000 excuses ! je corrige ca dès que j'ai fini mon après midi de soutenances de stages. Sylvain
Comme promis, c'est corrigé et déposé en version béta. Sylvain