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
.gn_sensitivity.t_sensitivity_rules
les changements à y effectuer :cd_raison_suppression
nécessitent de vérifier pourquoi le nom n'existe plus. Ce n'est pas normal car les noms sont dans des textes de loi et ne devrait pas disparaître. Demander confirmation auprès de botaniste/responsable SI. Il faudra plutôt utiliser une requête de mise à jour.cd_raison_suppression
nécessitent de remplacer la valeur du champ cd_nom
dans la table gn_sensitivity.t_sensitivity_rules
à l'aide de requêtes SQL qui seront à ajouter dans le fichier ''pre_detection.sql''.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.