Dotclear

Ticket #1425 (closed defect: worksforme)

Opened 11 years ago

Last modified 7 years ago

Problème mise à jour automatique et Gandi simple hosting

Reported by: Patidou Owned by: team
Priority: normal Milestone:
Component: module:core Version: 2.5
Severity: normal Keywords:
Cc:

Change History

comment:1 Changed 11 years ago by Patidou

On dirait que je peux plus modifier le ticket. Voici le message d'erreur sur l'admin :

Les extensions suivantes n'ont pas été installées :
antispam (Can't create table 'dotclear.#sql-36_75b5' (errno: 121) (1005))
blogroll (Can't create table 'dotclear.#sql-36_75b5' (errno: 121) (1005))

Sur la auth :

Une erreur est survenue durant la mise à jour automatique : Can't create table 'dotclear.#sql-36_75e4' (errno: 121) (1005)

comment:2 Changed 11 years ago by Patidou

J'ai corrigé le problème en modifiant manuellement les versions dans la table dc_version de la BDD. J'ai du changer également la version de core car j'avais une erreur sur la page auth.

Source des infos :  http://forum.dotclear.org/viewtopic.php?id=47106

Merci Kozlika.

comment:3 Changed 11 years ago by Patidou

Core dans dc_version ne se met pas à jour avec 2.5.2

comment:4 Changed 11 years ago by franck

  • Status changed from new to closed
  • Resolution set to fixed
  • Milestone changed from A definir to 2.5.3

Réglé avec la 2.5.3

comment:5 Changed 10 years ago by tomek

  • Status changed from closed to reopened
  • Resolution fixed deleted

Voici une erreur dans les error-log php lors de la mise à jour en 2.6 :

PHP Warning:  Invalid argument supplied for foreach() in /srv/data/web/vhosts/www.blabla.com/htdocs/dc/admin/blog_pref.php on line 72

Et sur la page d'authentification :

Une erreur est survenue durant la mise à jour automatique : can't create table 'dotclear.#sql-33_1f4' (errno: 121)(1005)
Last edited 10 years ago by tomek (previous) (diff)

comment:6 Changed 10 years ago by Patidou

Merci m'sieur tomek, j'allais créer un nouveau ticket. Bien fait de faire une recherche. ;-)

comment:7 Changed 10 years ago by franck

L'erreur dans blog_pref.php a un rapport avec le #1831.

comment:8 Changed 10 years ago by kozlika

  • Milestone changed from 2.5.3 to A definir

comment:9 Changed 10 years ago by tomek

à nouveau (en 2.7-dev-r2733) :

blogroll (Can't create table 'dotclear.#sql-be_3d4ae' (errno: 121) (1005))

indiqué sur le tableau de bord, à chaque chargement de page.

Version 1, edited 10 years ago by tomek (previous) (next) (diff)

comment:10 Changed 9 years ago by Patidou

Il y a toujours un problème avec SQL (DC 2.7) :

Les plugins suivants n'ont pas été installés :

    blogroll (Can't create table 'dotclear.#sql-9a_1dd0' (errno: 121) (1005))
Last edited 9 years ago by Patidou (previous) (diff)

comment:11 Changed 9 years ago by franck

Un check (via phpMyAdmin, table dc_version -> Opérations) de la table dc_version donne quoi ?

comment:12 follow-up: ↓ 13 Changed 9 years ago by philippe

Chez Gandi sur Simple Hosting depuis peu, j'ai fait ma première mise à jour automatique (2.6.4 à 2.7) sans aucun message d'erreur.

comment:13 in reply to: ↑ 12 Changed 9 years ago by franck

Replying to philippe:

Chez Gandi sur Simple Hosting depuis peu, j'ai fait ma première mise à jour automatique (2.6.4 à 2.7) sans aucun message d'erreur.

C'est louche ! Tu as surement cassé un truc :-p

comment:14 Changed 9 years ago by tomek

Ouaip, passque chez moi j'ai toujours le message d'erreur !

comment:15 Changed 9 years ago by philippe

@tomek et patidou : on est peut-être sur des serveurs aux caractéristiques différentes ? J'ai installé dc 2.6.4 il y a 15 jours sur une instance toute neuve, et mis à jour aujourd'hui.

comment:16 Changed 9 years ago by franck

Et donc, un check voire même un optimize sur la table dc_version et éventuellement celles concernées par les plugins, ça dit quoi ?

comment:17 Changed 9 years ago by lipki

Même chose pour moi.

Je vous raconte :)
J'ai installer une 2.7.1
puis je suis passer en testing, 2.7-r2868
puis stable 2.7.2 à la main
puis 2.7.3 en automatique

Le message est apparue à la dernière mise à jour.

Un optimize n'a rien donné.

Dans la table dc_version la variable core était : 2.7.3-r (quelque chose)

j'ai mis 2.7.3 et le message à disparue.

Last edited 9 years ago by lipki (previous) (diff)

comment:18 Changed 9 years ago by philippe

Je viens de reproduire le problème lors de la mise à jour de 2.7.3 à 2.7.4-r2936, avec le message suivant sur la page d'authentification :

Une erreur est survenue durant la mise à jour automatique : can't create table 'dotclear.#sql-33_1f4' (errno: 121)(1005)

La saisie de la bonne valeur dans la table dc_versions pour le core résout le problème

Last edited 9 years ago by philippe (previous) (diff)

comment:19 Changed 9 years ago by philippe

Même message d'erreur sur l'écran de connexion aujourd'hui, lors du passage de la version r2936 à 2943. En base, la version du core est restée à 2936.

Curieusement, en passant par le plugin maintenance > supprimer les logs et optimiser les tables, le message d'erreur sur l'écran de connexion a disparu, et la version de dc en base est correcte.

comment:20 Changed 9 years ago by franck

La suppression des logs n'a probablement rien à voir, par contre l'optimisation des tables… Un index foireux, voire quelque chose du plus subtil ?

Du coup est-ce que faire une optimisation des tables avant la mise à jour fonctionne pour tout le monde (chez Gandi Hosting) ?

comment:21 Changed 9 years ago by philippe

@franck : je tenterai une optimisation des tables avant la mise à jour vers la prochaine nightly ;)

En revanche, pas de souci pour le passage d'une 2.7.2 à 2.7.3 sur la même instance d'hébergement ce matin.

C'est peut-être juste la mise à jour vers une version de dev qui coince ? N'y aurait-il pas un mécanisme particulier entre les nightlies et la base ?

comment:22 Changed 9 years ago by philippe

  • Summary changed from Problème 2.5.1 et Gandi simple hosting to Problème mise à jour automatique et Gandi simple hosting

comment:23 Changed 9 years ago by franck

Pas de traitement différent entre les nightlies et les stables question base de données, pour autant que je sache. Et puis il me semble que les mises à jour de stable posent le même problème, non ?

comment:24 Changed 9 years ago by philippe

Non justement, je ne parvenais pas à reproduire le problème avec les versions stables, comme indiqué dans mon message n°13. C'est la mise à jour de la version de dev (rxxx) qui semble coincer chez moi. Qu'en disent les autres ?

Last edited 9 years ago by philippe (previous) (diff)

comment:25 Changed 9 years ago by philippe

La mise à jour de ce matin vers la nightly r2957 n'a pas posé de problème, sur la même installation dont je parlais au-dessus. C'est peut-être autoréparable, comme bug...

comment:26 Changed 9 years ago by franck

Attendons les mises à jour suivantes, on avisera alors. Mais si c'est le cas j'aimerais bien savoir ce qu'ils ont modifié chez Gandi !

comment:27 Changed 9 years ago by tomek

Je confirme qu'il n'y a plus le message d'erreur sur la version stable, je viens de faire la mise à jour 2.7.4 sans souci.

comment:28 Changed 9 years ago by philippe

Idem avec plusieurs installations de dc sur la même instance, et donc plusieurs bases : plus de souci de mise à jour.

comment:29 Changed 9 years ago by tomek

Réapparition du message d'erreur à l'instant pour la mise à jour de la 2.7.5... Grompf.

comment:30 Changed 9 years ago by philippe

J'ai mis à l'instant 5 blogs à jour, chacun avec son installation, et pas de souci de mon côté sur une instance taille S de Simple Hosting.

comment:31 Changed 9 years ago by philippe

Réapparition du message d'erreur suite à la mise à jour en 2.8

Une erreur est survenue durant la mise à jour automatique : Can't create table 'bla.#sql-38_daa7' (errno: 121) (1005)

WTF ?

comment:32 Changed 8 years ago by franck

Visiblement c'est un souci avec les tables possédant des clés étrangères.

Reste à trouver la particularité de Gandi Hosting vis-à-vis de MySQL !

comment:33 Changed 8 years ago by philippe

En ce moment, mon installation de dev affiche toujours, sur la page de connexion, le message

Une erreur est survenue durant la mise à jour automatique : Can't create table 'dissitou.#sql-38_10f59' (errno: 121) (1005)

L'astuce citée plus haut consistant à modifier à la main la version du core dans dc_versions ne fonctionne pas non plus.

Un accès à l'installation ou phpmyadmin te serait-il utile ?

comment:34 Changed 8 years ago by franck

Ah oui pourquoi pas. Cela dit je ne suis pas certain de regarder rapidement.

comment:35 Changed 8 years ago by philippe

Tu me sonneras quand tu auras le temps de regarder ?

comment:36 Changed 8 years ago by franck

J'aurais du temps à partir de demain, tu m'envoies ça par mail Philippe ?

comment:37 Changed 8 years ago by franck

Bon, c'est apparemment un sérieux problème, car impossible d'ajouter une clé étrangère à une table !

Exemple :

ALTER TABLE `dc_category` ADD CONSTRAINT `dc_fk_category_blog` FOREIGN KEY (`blog_id`) REFERENCES `dissitou`.`dc_blog`(`blog_id`) ON DELETE CASCADE ON UPDATE CASCADE;

Renvoie :

Erreur
Requête SQL :


ALTER TABLE `dc_category` ADD CONSTRAINT `dc_fk_category_blog` FOREIGN KEY (`blog_id`) REFERENCES `dissitou`.`dc_blog`(`blog_id`) ON DELETE CASCADE ON UPDATE CASCADE
MySQL a répondu: Documentation

#1005 - Can't create table 'dissitou.#sql-38_1371a' (errno: 121) (Détails…) 

Et aucune clé étrangère n'est a priori présente (j'en ai checké deux autres)

comment:38 Changed 8 years ago by franck

Et après vérif, la clé est répertoriée dans la base information_schema, table TABLE_CONSTRAINT

Pas étonnant que ça hurle à la création.

Reste à voir comment remettre ça en ordre, si seulement c'est de notre ressort…

comment:39 Changed 8 years ago by franck

Et un

SHOW CREATE TABLE `dc_category`;

Retourne :

CREATE TABLE `dc_category` (
 `cat_id` bigint(20) NOT NULL,
 `blog_id` varchar(32) COLLATE utf8_bin NOT NULL,
 `cat_title` varchar(255) COLLATE utf8_bin NOT NULL,
 `cat_url` varchar(255) COLLATE utf8_bin NOT NULL,
 `cat_desc` longtext COLLATE utf8_bin,
 `cat_position` int(11) DEFAULT '0',
 `cat_lft` int(11) DEFAULT NULL,
 `cat_rgt` int(11) DEFAULT NULL,
 PRIMARY KEY (`cat_id`),
 UNIQUE KEY `dc_uk_cat_url` (`cat_url`,`blog_id`),
 KEY `dc_idx_category_blog_id` (`blog_id`) USING BTREE,
 KEY `dc_idx_category_cat_lft_blog_id` (`blog_id`,`cat_lft`) USING BTREE,
 KEY `dc_idx_category_cat_rgt_blog_id` (`blog_id`,`cat_rgt`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

Sans aucune mention de clé étrangère, du coup Dotclear considère qu'elle n'existe pas et qu'il faut la créer.

comment:40 Changed 8 years ago by franck

Visiblement c'est juste un problème pour récupérer l'info sur les clés étrangères coté DC, un SHOW CREATE TABLE peut ne pas suffire, car je viens de tester la suppression en cascade (billet → commentaire) et ça fonctionne très bien.

comment:41 Changed 8 years ago by franck

Exemple d'un

SHOW CREATE TABLE `dc_category`;

Donne sur mon serveur perso :

CREATE TABLE `dc_category` (
  `cat_id` bigint(20) NOT NULL,
  `blog_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `cat_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `cat_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `cat_desc` text,
  `cat_position` int(11) DEFAULT '0',
  `cat_lft` int(11) DEFAULT NULL,
  `cat_rgt` int(11) DEFAULT NULL,
  PRIMARY KEY (`cat_id`),
  UNIQUE KEY `dc_uk_cat_url` (`cat_url`,`blog_id`),
  KEY `dc_idx_category_blog_id` (`blog_id`),
  KEY `dc_idx_category_cat_lft_blog_id` (`blog_id`,`cat_lft`) USING BTREE,
  KEY `dc_idx_category_cat_rgt_blog_id` (`blog_id`,`cat_rgt`) USING BTREE,
  CONSTRAINT `dc_fk_category_blog` FOREIGN KEY (`blog_id`) REFERENCES `dc_blog` (`blog_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

comment:42 Changed 8 years ago by franck

Je viens de faire le test suivant sur une instance de test Gandi Hosting :

  1. Installation d'une 2.8.2 fraichement sortie du panier (je l'ai joué feignasse en utilisant simplement le dotclear-loader.php)
  2. Basculement sur le canal 'unstable' pour les mises à jour (aka define('DC_UPDATE_VERSION','unstable'); dans le inc/config.php)
  3. Mise à jour en 2.9-dev-r3184

No problemo, pas de message d'erreur, l'upgrade se passe au poil.

J'en déduis que les problèmes de certains datent d'un temps ou MySQL était buggué côté gestion des clés étrangères (sur une version 5.1.nnnn de mémoire)​ et je n'ai trouvé aucun moyen de réparer facilement.

comment:43 Changed 8 years ago by franck

Cf  https://bugs.mysql.com/bug.php?id=16614 → MySQL version 5.1.5 ou  https://bugs.mysql.com/bug.php?id=78754 → MySQL version 5.6/5.7

Last edited 8 years ago by franck (previous) (diff)

comment:44 Changed 8 years ago by franck

Le fait d'installer une nouvelle fois DC sur une base toute neuve à l'air de suffire à tout remettre en ordre du côté des clés étrangères.

Donc une solution possible serait :

  1. Créer une nouvelle base
  2. Installer un DC, avec le dotclear_loader.php par exemple
  3. Supprimer la nouvelle base et l'installation Dotclear qui vient d'être installée

comment:45 Changed 8 years ago by franck

Bon, en fait, la solution proposée ne fonctionne pas sur toutes les instances.

Une solution alternative (et qui à l'air de résoudre le problème) :

  1. Avec phpMyAdmin, créer une nouvelle base de données (UTF8)
  2. Exporter toute l'ancienne base
  3. Importer le résultat dans la nouvelle base de données créée en 1.
  4. Modifier finalement le fichier inc/config.php pour utiliser la nouvelle base

Ça peut être fait dès maintenant et sans attendre la prochaine version de Dotclear.

comment:46 Changed 8 years ago by franck

Épisode suivant :

La procédure décrite ci-dessus, si elle fonctionne, ne résiste pas à un nouvel update !

Cela dit, l'intégrité de la base n'est pas remise en question, les clés étrangères existent et font leur job.

comment:47 Changed 8 years ago by philippe

Pour information : sur une instance récente, pas de problème de mise à jour depuis 2.8.2 vers 2.9 \o/

comment:48 follow-up: ↓ 49 Changed 8 years ago by philippe

Vérifié sur plusieurs instances maintenant, la mise à jour vers la version 2.9 se passe très bien \o/

comment:49 in reply to: ↑ 48 Changed 8 years ago by franck

Replying to philippe:

Vérifié sur plusieurs instances maintenant, la mise à jour vers la version 2.9 se passe très bien \o/

Tant mieux, mais je n'avais pas d'inquiétudes te concernant, puisque tu n'avais plus de souci de clés étrangères. D'autres rencontreront probablement des soucis et c'est alors que le petit plugin growUp sera utile ( →  http://open-time.net/public/dc2/plugin-growUp-0.1.zip )

comment:50 Changed 7 years ago by franck

  • Status changed from reopened to closed
  • Resolution set to worksforme
  • Milestone A definir deleted
Note: See TracTickets for help on using tickets.

Sites map