Nextcloud DB table "oc_filecache" corrupted: mariadb crashes at startup

Version française plus bas.

So finnaly, after long long seaches, I solved my problem with mariadb corrupted table with this method (not very clean but it has worked):

  • stop mariadb service: systemctl stop mysql.service

  • move mysql data dir to a safe place: mv /var/lib/mysql /var/lib/mysql-backup

  • edit /etc/mysql/my.cnf and comment the line innodb_force_recovery = 5

  • start mariadb service: systemctl start mysql.service
    mariadb should start normally

  • connect to mysql: mysql -u root -pYOUR_MYSQL_ROOT_PASSWORD (stored in /etc/yunohost/mysql)

  • create nextcloud database: create database nextcloud; (don’t forget the ; at the end of the line)

  • quit mysql: exit

  • restore the nextcloud database dump: mysql -u root -pYOUR_MYSQL_ROOT_PASSWORD nextcloud < /path_to_your_nextcloud_dump.sql

  • connect to mysql: mysql -u root -pYOUR_MYSQL_ROOT_PASSWORD

  • empty the faulty table: truncate nextcloud.oc_filecache;

  • quit mysql: exit

  • check all the tables in all the databases: mysqlcheck -u root -pYOUR_MYSQL_ROOT_PASSWORD --all-databases

all of the tables should be ok!

  • connect to your nextcloud web interface: ok

Bon finalement, j’ai réussi à m’en sortir avec la table corrompue dans la base nextcloud, en utilisant la méthode suivante (un peu bourrine, mais ça marche):

  • arrêt du service mariadb: systemctl stop mysql.service

  • déplacement du répertoire de stockage de mysql: mv /var/lib/mysql /var/lib/mysql-backup

  • editer /etc/mysql/my.cnf et commenter la ligne innodb_force_recovery = 5

  • démarrage de mariadb: systemctl start mysql.service
    mariadb devrait démarrer correctement

  • se connecter à mysql: mysql -u root -pVOTRE_MOT_DE_PASSE_ROOT_MYSQL (stocké dans /etc/yunohost/mysql)

  • Créer la base de données nextcloud: create database nextcloud; (ne pas oublier le ; en fin de ligne)

  • quitter mysql: exit

  • restaurer le dump de la base nextcloud: mysql -u root -pVOTRE_MOT_DE_PASSE_ROOT_MYSQL nextcloud < /path_to_your_nextcloud_dump.sql

  • se connecter à mysql: mysql -u root -pVOTRE_MOT_DE_PASSE_ROOT_MYSQL (stocké dans /etc/yunohost/mysql)

  • vider la table corrompue: truncate nextcloud.oc_filecache;

  • quitter mysql: exit

  • vérification de toutes les tables dans toutes les bases présentes: mysqlcheck -u root -pVOTRE_MOT_DE_PASSE_ROOT_MYSQL --all-databases
    Normalement, toutes les tables doivent avoir le statut “ok”

  • connexion à l’interface web de nextcloud: ok

2 Likes