Causes d’erreur courantes
Outre une interruption de service du serveur MYSQL palliée par le cache, les deux principales causes d’erreur courantes proviennent de :
mauvaise copie automatique de tables par SPIP :
symptôme : des tables manquantes et d’autres nommées comme spip_XXXX
champ inconnu dans une table :
symptôme : un placard d’erreur masque une partie de l’espace privé ...
avec un message du genre..
Soit un plugin n’a pas été correctement activé (il n’a pas ajouté ses champs à la base).
Soit la base utilisée ou restaurée n’est pas à la bonne définition de structure...
Impossible de créer un article dans SPIP : plus exactement, la création d’articles échoue avec un message d’erreur sibyllin "Erreur" (sans autre indication) : voir ci-dessous.
En investiguant (par Adminer) on constate qu’un article est bien créé, mais avec un id_article
à zéro !
Les plus tenaces auront aussi analysé la structure de la base d’Articles, et sur le champ id_article
manque l’indication "Incrément automatique".....
Je ne sais pas comment, la définition de la table SPIP Articles a été altérée dans MySQL, et le champ index n’est pas automatiquement valué [2] Adminer vous permettra facilement de "Modifier la structure de la table", et la colonne marqué "AI" vous permettra de revalider l’incrément automatique sur le champ clé...
Le cas des dates
Le format datetime est tres précis,et MySQL reste souvent exigeant sur le sujet, comme SPIP, en particulier pour les valeurs initialisées à zéro [3] ou nulles : de vieilles versions de Saisies SPIP peuvent entrainer des bugs inexplicables, mais la norme est désormais à lire ici.
les MYSQL récents sont exigeant sur les DATE
Ce sont des messages du genre
- Erreur dans la requête (1067) : Invalid default value for ’date’
lors de l’importation d’une base par instructions SQL texte (ou activation d’un plugin)
Cette erreur peut être provoquée par une définition de date en table sous la forme traditionnelle :
datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
, qui n’est plus acceptée en mode SQL strict.
La solution est généralement à rechercher du côté du paramétrage SQL_MODE :
vous pouvez rajouter directement la valeur d’une ligne dans mes_options,
SPIP permet déjà de définir directement deux constantes :
- _MYSQL_SQL_MODE
- _MYSQL_SQL_MODE_TEXT_NOT_NULL
une solution facile en local : modifier le mode de démarrage de SQL directement dans le fichier de configuration /mysql/mysql5.7.36
my.ini
, en revenant en mode traditionnel : modifier ces lignes....
; Set the SQL mode to strict (trop exigeant pour les SPIP traditionnels)
;sql_mode=""
sql_mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"
Un autre type d’erreurs est parfois signalé, en particulier pour l’installation de plugins (voir par exemple https://discuter.spip.net/t/ovh-et-...). Pour d’obscures raisons de fonctionnement interne de plugins liés à la base de donnée, il faut lancer une "Maintenance / Répartation technique" juste après l’installation de chaque plugin récalcitrant
Article publié le 17 avril 2021, et actualisé en mai 2024 Provisoire (à compléter...) .
Répondre à cet article