De temps à autre, les développeurs sont dans l'obligation de modifier la structure de la base de données pour y incorporer les nouvelles fonctionnalités. Dans certains cas, ces modifications peuvent être appliquées aux bases de données existantes sans perte de leur contenu. Cela est possible quand les procédures enregistrées sont remplacées ou quand de nouvelles tables sont ajoutées (et que le contenu de ces dernières n'est pas fondamentalement nécessaire à une exploitation normale de LXR). Bien entendu, la fonctionnalité complète de la base et son intégrité ne peuvent être garanties qu'après la prochaine indexation genxref.

L'actualisation de la base de données est un service fourni par le script recreatedb.pl dans LXR 2.2 et supérieur.

Fichiers nécessaires avant actualisation

Le strict minimum pour actualiser une base LXR est le fichier principal de configuration lxr.conf.

Vérifiez que vous avez aussi le fichier de contexte custom.d/lxr.ctxt bien qu'il puisse être reconstruit mais pas sans risque d'incohérence.

Actualisation

Les étapes de configuration de LXR et de création de la base de données sont remplacées par la procédure suivante.

  1. Lancez le script recreatedb.pl IMPORTANT! Ce script est conçu pour être exécuté depuis le répertoire racine de LXR. Éventuellement, tapez la commande: $ cd /répertoire/racine/LXR/ $ ./scripts/recreatedb.pl --verbose

    Vous pouvez aussi utiliser une copie du fichier de configuration:

    $ ./scripts/recreatedb.pl --verbose custom.d/lxr.conf *** LXR DB initialisation reconstruction (version: 2.2) *** LXR root directory is /home/myself/lxr Configuration read from custom.d/lxr.conf Initial context custom.d/lxr.ctxt is reloaded Your DB engine was: MySQL Configuration file custom.d/lxr.conf loaded *** scanning global configuration section *** *** scanning tree1 tree configuration section *** *** scanning tree2 tree configuration section *** *** scanning tree3 tree configuration section ***

    recreatedb.pl crée un script custom.d/initdb.sh contenant les instructions SQL permettant de reconstruire toutes les bases de données correspondant aux arbres décrits dans le fichier principal de configuration (et donc actualiser le schéma de celles-ci).

  2. Mise à jour des bases de données $ NO_DB=1 NO_USER=1 ./custom.d/initdb.sh Le point important ici est la modification de l'environnement local par les variables shell NO_DB et NO_USER qui suppriment respectivement la création de la base et celle de l'utilisateur. Le contenu initial est alors préservé. Voir les notes concernant ce script dans l'étape de configuration .
  3. Éventuellement, si vos arbres ont été modifiés, réindexez-les $ ./genxref --allurls C'est le seul cas où l'option --allurls est recommandée (ou plutôt tolérée). Dans des circonstances mal définies, la réindexation d'arbres sous PostgreSQL peut échouer. Dans ce cas, interrompez le genxref actif avec control-C et relancez des genxref indiviuels à partir de l'arbre en erreur: $ ./genxref --url=... --reindexall L'option --reindexall n'est réellement nécessaire que sur l'arbre en erreur pour forcer une base de données correcte.

Usage avancé

Voir l'astuce Reconstruction des bases de données.