Présentation des étapes pour migrer TaxRef malgré l'utilisation en production d'une version ancienne de TaxHub (v1.9.4). Réaliser d'abord toutes ces étapes en local avant de les reproduire en production.
Pré-requis : la base de données ne doit pas avoir évolué… Sinon, il faut vérifier que les modifications sont compatibles avec la branche feat/sinp
. Le code SQL de migration peut être ajouté au script SQL pre_detection.sql
(voir ci-dessous). Rechercher les éventuelles évolutions dans la liste des releases.
Migration de TaxRef en version :
taxonomie.t_meta_taxref
dans script SQL de pré-détection.web-srv
~/www/
: cd ~/www/
git clone https://github.com/PnX-SI/TaxHub.git taxhub.taxref_v17
cd ~/www/taxhub.taxref_v17 ; git submodule init; git submodule update
cd ~/www/taxhub.taxref_v17
cp settings.ini.sample settings.ini cp apptax/config.py.sample apptax/config.py
settings.ini
: vi settings.ini
db_host=10.0.1.20 # Database name db_name=geonature2db # Database owner username user_pg=geonatadmin # Database owner password user_pg_pass=<geonatadmin-password>
config.py
: vi apptax/config.py
SQLALCHEMY_DATABASE_URI = "postgresql://geonatadmin:<geonatadmin-password>@10.0.1.20:5432/geonature2db" SECRET_KEY = '<generate-super-secret-key-with-uuid>'
venv
: ./install_app.sh
venv
: source venv/bin/activate
flask taxref migrate-to-v17 import-taxref-v17
pre_detection.sql
mais on peut lancer la commande suivante pour tester d'éventuel changement réalisé dans la base : flask taxref migrate-to-v17 test-changes-detection
sinp-<region>-data
: taxref/v17/csv/
du dépôt.taxref/v17/sql/
. Se baser sur la version précédente de TaxRef pour avoir des exemples de script SQL qu'il faudra adapté aux informations fournies dans les fichiers CSV.wget https://raw.githubusercontent.com/cbn-alpin/sinp-<region>-data/main/taxref/v<version>/sql/pre_detection.sql wget https://raw.githubusercontent.com/cbn-alpin/sinp-<region>-data/main/taxref/v<version>/sql/post_detection.sql
flask taxref migrate-to-v17 apply-changes --script_predetection ./pre_detection.sql --script_postdetection ./post_detection.sql
taxonomie.taxref
et qu'un nouveau cd_nom ajouté à partir de la v17 s'y trouve bien.flask taxref link-bdc-statut-to-areas
psql -h localhost -U geonatadmin -d geonature2db -f ~/data/db-geonature/data/sql/04_disable_status_text.sql
psql -h localhost -U geonatadmin -d geonature2db -f ~/data/db-geonature/data/sql/003_disable_status_text.sql
04_disable_status_text.sql
.enable
à true
dans la table taxonomie.bdc_statut_text
correspondent bien à la France métropolitaine, à la région ou aux département qui concernent le SINP. Il peut s'avérer nécessaire de relancer le script SQL de sélection des textes du SINP (dépôt sinp-<region>-data/db-geonature/data/sql/…_disable_status_text.sql
) pour activer les nouveaux textes.flask taxref migrate-to-v17 import-taxref-v17
action
afficher seulement lignes commençant par "Conflicts with attributes". Sélectionner ces lignes et les colorer en rouge.f_cd_ref
trier les résultat de A à Z : cela va regrouper les lignes par f_cd_ref et il sera plus simple de repérer les cd_ref à remplacer.f_cd_ref
indique le cd_ref retenu et la colonne i_cd_ref
indique le cd_ref remplacé. Pour chaque f_cd_ref
on va trouver une ligne avec la même valeur dans i_cd_ref
et dans f_cd_ref
, elle est à ignorer. Il faut repérer les lignes où ils sont différents. i_cd_ref
et s'en servir pour supprimer les attributs correspondant de la table cor_taxon_attributs
dans le script SQL de prédétection.media_nb
indique une valeur non NULL, il faut aussi remplacer l'attribution du cd_ref pour les médias correspondant dans le script SQL de prédétection en récupérant les valeurs des colonnes i_cd_ref
et f_cd_ref
. Si plusieurs i_cd_ref
sont fusionnés dans le même f_cd_ref
, utiliser une clause IN.flask taxref migrate-to-v17 apply-changes
et en indiquant cette fois l'utilisation des fichiers SQL de pré-détection et post-détection : flask taxref migrate-to-v17 apply-changes --script_predetection ./pre_detection.sql --script_postdetection ./post_detection.sql
table_name
permet de filtrer sur la table :gn_synthese.synthese
les changements à y effectuer :cd_raison_suppression
nécessitent de mettre à NULL le champ cd_nom
dans la table gn_synthese.synthese
à l'aide de requêtes SQL qui seront à ajouter dans le fichier ''pre_detection.sql''.cd_raison_suppression
nécessitent de remplacer la valeur du champ cd_nom
dans la table gn_synthese.synthese
à l'aide de requêtes SQL qui seront à ajouter dans le fichier ''pre_detection.sql''.taxonomie.bib_noms
les changements à y effectuer :cd_raison_suppression
, il faudra supprimer les lignes correspondantes de la table cor_nom_liste
et bib_noms
à l'aide de requêtes SQL qui seront à ajouter dans le fichier ''pre_detection.sql''.cd_raison_suppression
nécessitent de remplacer la valeur du champ cd_nom
dans la table taxonomie.bib_noms
à l'aide de requêtes SQL qui seront à ajouter dans le fichier ''pre_detection.sql''. Si les requêtes de mise à jour pose problème vis à vis du maintient temporaire de l'ancienne version de TaxRef, il est possible d'ajouter les cd_nom correspondant à la liste des lignes à supprimer dans la table cor_nom_liste
et des lignes à supprimer dans la table taxonomie.bib_noms
.flask taxref migrate-to-v17 apply-changes
, normalement le script SQL pre_detection.sql
devrait s'exécuter correctement mais le script post_detection.sql
devrait générer des erreurs. En effet, ce script "post-détection" est exécuté avant d'avoir réaliser le changement de référentiel TaxRef, ainsi la réactivation des contraintes désactiver dans le script pre_detection.sql
peuvent générer de nouvelles erreurs. Voir ticket #495. Il est donc nécessaire de modifier temporairement TaxRef pour qu'ils ressemblent à la future version sur laquelle nous cherchons à migrer.flask taxref migrate-to-v17 apply-changes
, il devient possible de copier toutes les données dans une base de données GeoNature de la branche "develop" à l'aide du script Bash copy_all.sh.gn_synthese.synthese
et taxonomie.bib_noms
. Ces erreurs sont dues à l'absence de certaines lignes du TaxRef de la version générée avec la branche "develop". Pourquoi ces lignes n'ont elles pas été supprimées dans la version migrée ? Il est nécessaire de supprimer les lignes correspondant à ces cd_noms de la table gn_synthese.synthese et des tables cor_nom_liste et bib_noms du schéma taxonomie.