réparer base sqlite

Bonjour,
je reviens à la charge sur ma base sqlite corrompue.
Quelqu'un connait-il un outil, linux si possible mais bon windows je me
débrouillerai, qui me permette de réparer une base sqlite ?
Genre je charge ma base sur mon ordi, j'ouvre cet outil, je clique trois
fois et elle est réparée je n'ai plus qu'à la remettre à sa place ?
Ca existe un truc comme ça ?
Ma base se corrompt trop régulièrement pour que je puisse chaque fois
récupérer une sauvegarde (et demander aux contributeurs de réécrire
leurs derniers articles), et mon hébergeur ne me permettra pas de passer
en mysql avant un moment (nécessite une mise à jour php car mon nom de
compte chez eux est trop long pour créer une base mysql).

Merci,
Etienne

--

Vous pouvez noter ma clé publique de chiffrage OpenPGP : 86FBA556
Elle vous permet de m'envoyer un courriel privé au lieu d'une carte postale ouverte à tous.
---

Bonsoir,
J'ai eu le même souci, j'ai posé les mêmes questions. J'ai même cru avoir réparé... mais non. Ca semble impossible.
Je m'en suis tiré avec une sauvegarde pas trop ancienne. Et j'ai tout passé en mysql.

Jacques

Le 31/01/2019 à 18:51, Etienne a écrit :

Bonjour,
je reviens à la charge sur ma base sqlite corrompue.
Quelqu'un connait-il un outil, linux si possible mais bon windows je me
débrouillerai, qui me permette de réparer une base sqlite ?
Genre je charge ma base sur mon ordi, j'ouvre cet outil, je clique trois
fois et elle est réparée je n'ai plus qu'à la remettre à sa place ?
Ca existe un truc comme ça ?
Ma base se corrompt trop régulièrement pour que je puisse chaque fois
récupérer une sauvegarde (et demander aux contributeurs de réécrire
leurs derniers articles), et mon hébergeur ne me permettra pas de passer
en mysql avant un moment (nécessite une mise à jour php car mon nom de
compte chez eux est trop long pour créer une base mysql).

Merci,
Etienne

Bien, faisons le point.
Il semble trop compliqué de réparer une base sqlite corrompue.
Donc, grâce à François de chez mon hébergeur lautre.net et à teamspipfactory, j’ai enfin pu contourner un des problèmes et créer une base mysql chez mon hébergeur.
J’ai donc créé un clone de mon site afin de passer en mysql suivant la procédure manuelle décrite ici : J’utilise pour ça une sauvegarde sqlite de mon site datant d’avant les bugs. Mais là, problèmes : quand j’en arrive à Mettre à jour la table spip_meta dans dump1.sqlite : j’ai un message d’erreur dans ma console qui dit que la table spip_meta existe déjà. J’en déduis que la commande précédente : Supprimer la meta de structure dans dump1.sqlite : ne fonctionne pas. J’utilise donc sqliteman pour supprimer la table spip_meta de dump1 et je peux enfin la mettre à jour via la commande donnée plus haut. J’importe ça dans mon nouveau site de test. Là j’ai quelques messages d’erreurs qui disparaissent après une réparation de la base via l’interface spip. Puis tout aurait l’air presque bon sauf que : Je n’ai pas les rubriques. J’ai pourtant les articles et les événements. Via phpmyadmin la table spip_rubriques est vide, pourtant si j’ouvre avec sqliteman la base qui a servi à la restauration, j’ai bien les rubriques dedans. Je finirai par y arriver, avec votre aide …

Et je n’arrive pas non plus à importer les brèves , l’infolettre, les listes de diffusion et inscrits aux envois par mail etc…

Le 06/02/2019 à 17:40, Etienne a écrit :

J'ai donc créé un clone de mon site afin de passer en mysql suivant la procédure manuelle décrite ici : Passage de SQLite à MySQL
J'utilise pour ça une sauvegarde sqlite de mon site datant d'avant les bugs.

Bonjour,

la procédure décrite me parait vraiment compliquée.

Il y a une solution beaucoup plus simple, mais elle est indiqué tout en bas de l'article, on ne la voit pas forcément : "utiliser le plugin Fusion de Spip"

Solution testée et approuvée par plusieurs personnes.

Je vais modifier l'article pour la faire remonter.

--
nicod_

Bon ben résolu à l’arrache mais ça le fait.

J’ai restauré la base sqlite datant de décembre end emandant aux contributeurs du site de refaire tout ce qu’ils avaient fait depuis cette date (ce que je ne voulais pas faire mais arrivé un moment faut bien s’y résoudre.
A partir de là j’ai pu retrouver un site fonctionnel et migrer en mysql grâce au plugin fusion. Quelques galères parce que je fais un peu les choses à l’envers mais je m’en sors. Merci tous, François, teamspipfactory, Nicod etc…

Bonjour,

YouHH Houuuu !

J'ai trouvé un moyen de récupérer ma base SQLite endommagée !
En creusant google, creusant...

https://cyberforensicator.com/2018/03/03/forensic-analysis-of-damaged-sqlite-databases/

Un utilitaire de gestion SQLite fourni par SQlite permet de dumper la base SQlite en SQL.
Ça a marché. Le début est ci-dessous, et il semble que la table corrompue est spip_jobs.

Si beaucoup pouvaient essayer et voir si c'est cette même table qui se corrompt, ça pourraient peut-être être une piste de débogage...

a++

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE spip_jobs (
    id_job INTEGER NOT NULL,
    descriptif text DEFAULT '' NOT NULL COLLATE NOCASE,
    fonction varchar(255) NOT NULL DEFAULT '' COLLATE NOCASE,
    args longblob DEFAULT '' NOT NULL,
    md5args char(32) NOT NULL default '' COLLATE NOCASE,
    inclure varchar(255) NOT NULL DEFAULT '' COLLATE NOCASE,
    priorite smallint(6) NOT NULL default 0,
    date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
    status tinyint NOT NULL default 1,
    PRIMARY KEY (id_job));
/****** CORRUPTION ERROR *******/
CREATE TABLE spip_types_documents (
    extension varchar(10) DEFAULT '' NOT NULL,
    titre text DEFAULT '' NOT NULL COLLATE NOCASE,
    descriptif text DEFAULT '' NOT NULL COLLATE NOCASE,
    mime_type varchar(100) DEFAULT '' NOT NULL COLLATE NOCASE,
    inclus VARCHAR(255) DEFAULT 'non' NOT NULL COLLATE NOCASE,
    upload VARCHAR(255) DEFAULT 'oui' NOT NULL COLLATE NOCASE,
    media_defaut varchar(10) DEFAULT 'file' NOT NULL COLLATE NOCASE,
    maj TIMESTAMP,
    PRIMARY KEY (extension));
INSERT INTO spip_types_documents VALUES('jpg','JPEG','','image/jpeg','image','oui','image','2016-02-02 22:17:34');

Le 31/01/2019 à 18:51, Etienne a écrit :

Bonjour,
je reviens à la charge sur ma base sqlite corrompue.
Quelqu'un connait-il un outil, linux si possible mais bon windows je me
débrouillerai, qui me permette de réparer une base sqlite ?
Genre je charge ma base sur mon ordi, j'ouvre cet outil, je clique trois
fois et elle est réparée je n'ai plus qu'à la remettre à sa place ?
Ca existe un truc comme ça ?
Ma base se corrompt trop régulièrement pour que je puisse chaque fois
récupérer une sauvegarde (et demander aux contributeurs de réécrire
leurs derniers articles), et mon hébergeur ne me permettra pas de passer
en mysql avant un moment (nécessite une mise à jour php car mon nom de
compte chez eux est trop long pour créer une base mysql).

Merci,
Etienne

--
Stéphane

Les Voisins Spipeurs : http://www.voisins-spipeurs.net