Tu avais bien démonté
?
Tu avais bien démonté
?
Oui, j’ai double vérifié. Le lien n’est pas monté. L’erreur est toujours présente.
J’ai désinstallé mariadb-server de mon PC hôte et je l’ai réinstallé. Aucune erreur. Par contre il ne m’est toujours pas possible de lier la base mysql/mariadb de ma carte Olimex de mon instance Yunohost 11 à partir de mon PC hôte.
Quelle est l’erreur rencontrée? En lien avec l’incompatibilité de version MariaDB ?
Voilà l’erreur retournée:
sudo -u mysql mysqld --datadir=/media/system/var/lib/mysql --socket=/tmpmysql.sock
2025-05-27 15:00:40 0 [Note] Starting MariaDB 10.11.11-MariaDB-0+deb12u1 source revision e69f8cae1a15e15b9e4f5e0f8497e1f17bdc81a4 server_uid VVC/2AUaaRmugUpB2Bdw+vovbZg= as process 131071
2025-05-27 15:00:41 0 [Note] InnoDB: Compressed tables use zlib 1.2.13
2025-05-27 15:00:41 0 [Note] InnoDB: Number of transaction pools: 1
2025-05-27 15:00:41 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2025-05-27 15:00:41 0 [Note] InnoDB: Using liburing
2025-05-27 15:00:41 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
2025-05-27 15:00:41 0 [Note] InnoDB: Completed initialization of buffer pool
2025-05-27 15:00:41 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2025-05-27 15:00:41 0 [ERROR] InnoDB: Upgrade after a crash is not supported. The redo log was created with MariaDB 10.5.15. You must start up and shut down MariaDB 10.7 or earlier.
2025-05-27 15:00:41 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2025-05-27 15:00:41 0 [Note] InnoDB: Starting shutdown...
2025-05-27 15:00:41 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2025-05-27 15:00:41 0 [Note] Plugin 'FEEDBACK' is disabled.
2025-05-27 15:00:41 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2025-05-27 15:00:41 0 [ERROR] Aborting
Comme indiqué dans le log, il faut que tu utilises une version inférieure de MariaDB (10.5.15 ou 10.7). Tu devrais ensuite pouvoir ouvrir la base de données présente sur ta carte SD, la sauvegarder puis extraire les données qui t’intéressent.
il y a une erreur ici: ce n’est pas /tmpmysql.sock
mais /tmp/mysql.sock
Merci @otm33 pour ta confirmation. J’ai réinstallé un autre PC hôte avec une debian Bullseye (version 11) mais c’est un vieux PC qui n’a pas de périphérique pour une carte SSD. Donc peine perdue.
Mon PC hôte fonctionne sous Debian Bookworm (version 12). Je ne sais pas si je pourrais désinstaller la version 10.11.11 de mariadb et installer une version 10.5. Qu’en penses-tu ?
Ca va introduire de la complication pour pas grand chose : la version 10.5 n’est plus dans les dépôts de debian 12.
Le plus “simple” est de passer par docker et créer un conteneur qui disposera de la version 10.5 sans affecter son hôte (ton PC). Si tu ne connais pas, un conteneur est une sorte de mini machine virtuelle qui tourne sur ton PC et qui fonctionne presque comme un système isolé.
Référence: docker
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Vérifier que docker est démarré:
systemctl status docker
Pour arrêter docker systemctl stop docker
/ démarrer, etc systemctl start docker
…
lsof -i :3307
docker run -d \
--name mariadb-105 \
-e MYSQL_ROOT_PASSWORD=root \
-v <point de montage du SSD>/var/lib/mysql:/var/lib/mysql \
-p 3307:3306 \
mariadb:10.5
docker ps -a
docker stop <nom ou id du conteneur>
docker rm <nom ou id du conteneur>
docker exec -it mariadb-105 bash
mysql -u root -p // le mot de passe est celui défini dans les paramètres du conteneur : root
show databases; //tu devrais voir dotclear2
quit; // sortir de la base de données
Je pars ensuite du principe que tu veux récupérer uniquement les posts qui ne figurent pas dans ta BDD en prod et qu’ils ont été créés avec le même utilisateur que les autres:
mysqldump -uroot -p dotclear2 dc_post > /tmp/sauveg_dotclear2.sql
exit // sortir du conteneur
docker cp mariadb-105:/tmp/sauveg_dotclear2.sql <le répertoire que tu veux>/sauveg_dotclear2.sql
cp -pr sauveg_dotclear2.sql sauveg_dotclear2.sql.bak
nano sauveg_dotclear2.sql
) et on le modifie pour garder ceci :USE dotclear2;
LOCK TABLES `dc_post` WRITE;
/*!40000 ALTER TABLE `dc_post` DISABLE KEYS */;
INSERT IGNORE INTO `dc_post` VALUES (<les différentes entrées...>)
UNLOCK TABLES;
mysql -u root -p dotclear2 < sauveg_dotclear2.sql
J’espère ne rien avoir oublié, tout cela est assez risqué, comme à chaque fois que l’on touche à une BDD.
Tu pourrais aussi installer sur ton yunohost phpmyadmin qui aide à visualiser et comprendre l’architecture des BDD utilisées par certaines applications.
Très bon conseil. ‘phpmyadmin’ est déjà installé et j’ai commencé à regarder la façon dont les données sont stockées par dotclear2.
Je te tiens au courant pour le reste. Un grand merci pour ton temps, ton énergie et tes conseils.
J’ai installé docker de la façon suivante en root (su -):
apt update && apt upgrade
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Vérifier la version installée avec docker -v
et docker compose version
.
Ajouter son utilisateur au groupe docker usermod -aG docker *utilisateur*
J’y suis presque.
J’ai pu donc accéder à la base de données de ma carte Olimex que je n’arrive pas à démarrer.
J’ai pu extraire les données. En fait j’ai fait trois extractions différentes de la table dc_post, de dotclear2 dans son entièreté et de dc_post_media.
J’ai transféré le fichier SQL sur mon serveur.
J’ai une erreur quand j’injecte le fichier SQL dans la base de données dotclear2 de ma carte en production.
ERROR 1062 (23000) at line 5: Duplicate entry '66' for key 'PRIMARY'
Rien n’a été transféré.
Bizarre : tu as bien mis IGNORE dans la commande de départ du fichier sql?
Cela veut tout simplement dire que tu as déjà un post ou media avec l’id 66 dans ta bdd actuelle (regarde dans phpmyadmin). C’est un peu curieux si tu n’as pas touché à la bdd depuis son crash mais il suffit de trouver un id non attribué et de faire la modification manuellement dans le fichier sql à importer.
Oui, j’ai bien rajouté IGNORE
. Je regarde..
Bon je peux accéder à la base de données de la carte Olimex qui ne démarre plus. Je vais donc pouvoir m’en sortir. Cela va prendre du temps car d’un côté j’ai une version 2.24 de dotclear2 et de l’autre une version 2.27. Beaucoup de plugins n’ont pas été portés et certains sont devenus obsolètes. Du coup, cela affecte les bases de données. Donc pour tout remettre d’aplomb je dois faire un état des lieux très précis table par table et peut-être même billet par billet. Il y en a plus de 400 !
J’ai reçu une nouvelle carte SSD 32Gb et je vais pouvoir faire la manip. dont tu m’avais parlé en recopiant le répertoire /boot de la nouvelle carte une fois que j’aurais installé dessus Yunohost 11.
Je continuerai d’alimenter ce billet avec les résultats de mes investigations.
Un grand merci pour ton aide.
Ah, ça complique la donne…
: tu peux en donner une liste ?
Le plugin Billets connexes (relatedPosts) en 2.24 uniquement référencé en relatedposts en 2.27 fonctionne en 2.24 mais ne fonctionne plus en 2.27. Il est réputé obsolète. J’ai envoyé un message sur le journal de NIKROU.
Pas de plugin favicon en 2.27.
Pas de plugin cinecturlink en 2.27
Il y a peut-être un moyen : monter un dotclear-2.24 via un conteneur docker. Tu pourras ainsi lire ta bdd et peut-être la modifier pour la rendre compatible avec dotclear 2.27. Il est même possible d’upgrader vers 2.27 mais je n’ai pas cherché tous les écueils possibles dans cette manipulation.
mkdir /home/<...>/docker_dotclear
cd /home/<...>/docker_dotclear
wget https://download.dotclear.org/attic/dotclear-2.24.zip
unzip dotclear-2.24.zip
=> Rester dans /home/<...>/docker_dotclear
pour les manipulations suivantes
nano Dockerfile
FROM php:7.4-apache
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libonig-dev \
libxml2-dev
# modules pour dotclear
RUN docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable mysqli
# modifs droits
RUN a2enmod rewrite
RUN sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf
nano docker-compose.yml
services:
bdd: #nom de l'hôte de la base de données
container_name: dotclear_bdd
image: mariadb:10.5
restart: always
ports:
- "3310:3306" # tu choisis le port que tu souhaites sur l'hôte (toujours le premier, ici 3310)
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: dotclear2 # nom de la base de données
MYSQL_USER: dotclear
MYSQL_PASSWORD: password
volumes:
- mariadb-10.5-dotclear_bdd:/var/lib/mysql # création d'un volume persistant pour la BDD
web:
container_name: dotclear
build: .
ports:
- "1897:80" # tu choisis le port que tu souhaites sur l'hôte
depends_on:
- bdd
volumes:
- ./dotclear:/var/www/html # on monte juste le répertoire présent sur l'hôte
phpmyadmin:
container_name: dotclear_phpmyad # on installe aussi phpmyadmin pour pouvoir faire une manip sur la BDD : changer l'url du blog dans dc_blog
image: phpmyadmin
restart: always
ports:
- "1896:80" # tu choisis le port que tu souhaites sur l'hôte
environment:
PMA_HOST: bdd
PMA_USER: dotclear
PMA_PASSWORD: dotclearpass
volumes:
mariadb-10.5-dotclear_bdd:
chown -R www-data:www-data dotclear/* && chmod -R 755 dotclear/*
docker compose up --build -d
Cela va prendre un peu de temps mais tu auras ensuite un dotclear accessible a localhost:1897/dotclear2 ou IP:1897/dotclear2 et un phpmyadmin bien utile sur le port 1896.
# importer la base de données de l'ancien dotclear (toute la base de données et non pas quelques tables)
docker exec -i dotclear_bdd mysql -u dotclear -pdotclearpass dotclear2 < /cheminvers/dotclear2_backup.sql
il faudra peut-être (sans doute?) modifier des données dans certaines tables (l’url du blog, le chemin des thèmes…) pour rendre la bdd compatible avec le nouveau dotclear : tout cela pourra être fait dans phpmyadmin.
mv dotclear dotclear-2.24
wget https://download.dotclear.org/attic/dotclear-2.27.zip
unzip dotclear-2.27.zip
=> Répondre “All” à replace dotclear/CREDITS? [y]es, [n]o, [A]ll, [N]one, [r]ename:
chown -R www-data:www-data dotclear/* && chmod -R 755 dotclear/*
docker compose up --build -d
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.