Project

General

Profile

Anomalie #4364

MYSQL 5.7 - Erreurs avec les dates à 0

Added by nicod _ 4 months ago. Updated 4 months ago.

Status:
Nouveau
Priority:
Haut
Assignee:
-
Category:
-
Target version:
Start date:
08/01/2019
Due date:
% Done:

0%

Resolution:
Navigateur:

Description

En lien avec le ticket #4353

Par défaut, MYSQL 5.7 ne supporte plus les dates à 0, du type '0000-00-00 00:00:00'.
Ça vient de la config du sql_mode :

The default SQL mode in MySQL 5.7 includes these modes: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION.

https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_zero_date

L'API Sql de SPIP s'en sort par une pirouette en lançant un set sql_mode='', donc ça ne se "voit pas" dans l'espace privé, mais c'est pénible dès qu'on veut manipuler dans la base directement, et pas très propre.

En modifiant la déclaration d'un champ date de datetime NOT NULL DEFAULT '0000-00-00 00:00:00' à datetime DEFAULT NULL, ça lève déjà une partie du problème.

Comme pour #4353, le plus propre serait de modifier les déclarations dans SPIP, et de faire un update pour les mises à jour.

History

#1 Updated by cedric - 4 months ago

Mais le problème principal c'est qu'on utilise aussi des dates floues de type 2019-06-00 ou meme 2019-00-00 quand le jour ou le mois ne sont pas connus.
Ce n'est pas accepté non plus par le mode strict de mySQL mais pour le coup c'est bien plus compliqué à gérer pour ne pas perdre la feature
Chez moi j'ai changé le sql mode par défaut dans le my.ini (ou équivalent mariaDB)

Also available in: Atom PDF