Bon, dans l'idée j'utilisais Gitea et impossible de migrer de la 1.3.3 vers la 1.4.0. Systématiquement le fichier de la base indiquait une corruption pendant la migration. Auparavant j'avais déjà perdu des données.
Bref, voici ce qu'il faut faire pour (1) protéger SQLite des erreurs d'écriture et (2) réparer l'index de la base quand celui-ci est cassé (attention, je n'ai jamais réussi à récupérer un datafile mort si l'équivalent de la MFT de SQLite était touché).
1) Pour éviter les erreurs avec SQLite, ne pas activer les options : noatime et nodiratime.
En effet, SQLite se servirait de la date de mise à jour des inodes pour gérer les accès concurrentiels au datafile. Cela est certes dit au conditionnel mais en supprimant ces options de mon /etc/fstab je n'ai plus d'ennuis.
2) Pour récupérer la base corrompue il faut :
-
Installer le paquet sqlite3 :
sudo apt install sqlite3
-
Saisir la commande :
sqlite3 gitea-broken.db ".dump" | sqlite3 gitea-repaired.db