sqlmig: support des fichiers spécifique au mode devel
This commit is contained in:
parent
e493b49811
commit
174c08759e
46
sqlmig
46
sqlmig
|
@ -6,6 +6,39 @@ urequire DEFAULTS install
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: gérer les mises à jour sur une base de données
|
uecho "$scriptname: gérer les mises à jour sur une base de données
|
||||||
|
|
||||||
|
Les mises à jours sont dans un répertoire UPDATEDIR, qui contient un répertoire
|
||||||
|
pour chaque base de données à gérer. Ces répertoires sont des DATABASEDIR. Les
|
||||||
|
fichiers sql peuvent être placés dans le répertoire UPDATEDIR pour les mises à
|
||||||
|
jour administratives, ou dans DATABASEDIR pour les mises à jour de la base de
|
||||||
|
données.
|
||||||
|
|
||||||
|
Les fichiers sql peuvent contenir dans les premières lignes du fichier un tag
|
||||||
|
@sqlmig sous forme de commentaire. On peut avoir:
|
||||||
|
-- @sqlmig drop
|
||||||
|
identifie une suite de requêtes à exécuter pour supprimer la base de données
|
||||||
|
et recommencer à zéro
|
||||||
|
-- @sqlmig create
|
||||||
|
identifie une suite de requêtes à exécuter pour créer la base de données.
|
||||||
|
-- @sqlmig admin
|
||||||
|
identifie une mise à jour administrative. Les fichiers situés dans UPADTEDIR
|
||||||
|
sont automatiquement considérés comme des mises à jour administratives même
|
||||||
|
en l'absence de ce tag.
|
||||||
|
|
||||||
|
Les mises à jour administratives sont exécutées avec les paramètres du fichier
|
||||||
|
my.cnf (resp. ora.conf) et sont typiquement utilisées pour créer les comptes
|
||||||
|
utilisateurs pour la connexion à la base de données et leur attribuer des droits
|
||||||
|
d'accès. Ces mises à jour sont exécutées sans sélectionner une base de données
|
||||||
|
en particulier.
|
||||||
|
|
||||||
|
Les mises à jour utilisateurs sont exécutées avec les paramètres du fichier
|
||||||
|
my.cnf (resp. ora.conf) augmenté du fichier my-DBNAME.cnf (res. ora-DBNAME.conf)
|
||||||
|
Elles sont exécutées avec la base de données concernée sélectionnée.
|
||||||
|
|
||||||
|
Il y a deux modes d'exécution: prod ou devel. En mode prod, la suppression de
|
||||||
|
base de données est interdite. De plus, tous les fichiers de mise à jour de la
|
||||||
|
forme *.devel.sql sont ignorés. Cela permet de fignoler une mise à jour sans
|
||||||
|
risquer de l'exécuter en production.
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
$scriptname [options]
|
$scriptname [options]
|
||||||
|
|
||||||
|
@ -733,8 +766,8 @@ args=(
|
||||||
-d:,--databasedir: dbdir=
|
-d:,--databasedir: dbdir=
|
||||||
-n:,--database: dbname=
|
-n:,--database: dbname=
|
||||||
--force,--continue-on-error force=1
|
--force,--continue-on-error force=1
|
||||||
--prod-dangerous mode=prod
|
--prod-mode-dangerous mode=prod
|
||||||
--devel mode=devel
|
--devel-mode mode=devel
|
||||||
-Z,--recreate drop=1
|
-Z,--recreate drop=1
|
||||||
--drop-only '$drop=1; drop_only=1'
|
--drop-only '$drop=1; drop_only=1'
|
||||||
--create-only create_only=1
|
--create-only create_only=1
|
||||||
|
@ -942,6 +975,7 @@ if [ -n "$updatedir" ]; then
|
||||||
array_lsfiles updates "$updatedir" "*.sql"
|
array_lsfiles updates "$updatedir" "*.sql"
|
||||||
if [ ${#updates[*]} -gt 0 ]; then
|
if [ ${#updates[*]} -gt 0 ]; then
|
||||||
ensure_dbtype "$updatedir" "$type"
|
ensure_dbtype "$updatedir" "$type"
|
||||||
|
ensure_dbmode "$dbtype" "$mode"
|
||||||
if [ "$dbtype" == mysql ]; then
|
if [ "$dbtype" == mysql ]; then
|
||||||
# construire les paramètres pour mysql
|
# construire les paramètres pour mysql
|
||||||
mysql_set_adminargs "$updatedir"
|
mysql_set_adminargs "$updatedir"
|
||||||
|
@ -951,6 +985,7 @@ if [ -n "$updatedir" ]; then
|
||||||
etitled "Mises à jour admin"
|
etitled "Mises à jour admin"
|
||||||
for update in "${updates[@]}"; do
|
for update in "${updates[@]}"; do
|
||||||
setx name=basename "$update"
|
setx name=basename "$update"
|
||||||
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
mysql_admin_update "$name" "$update"
|
mysql_admin_update "$name" "$update"
|
||||||
done
|
done
|
||||||
eend; eclearp
|
eend; eclearp
|
||||||
|
@ -964,6 +999,7 @@ if [ -n "$updatedir" ]; then
|
||||||
etitled "Mises à jour"
|
etitled "Mises à jour"
|
||||||
for update in "${updates[@]}"; do
|
for update in "${updates[@]}"; do
|
||||||
setx name=basename "$update"
|
setx name=basename "$update"
|
||||||
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
oracle_admin_update "$name" "$update"
|
oracle_admin_update "$name" "$update"
|
||||||
done
|
done
|
||||||
eend; eclearp
|
eend; eclearp
|
||||||
|
@ -1013,6 +1049,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
fi
|
fi
|
||||||
for drop in "${drops[@]}"; do
|
for drop in "${drops[@]}"; do
|
||||||
setx name=basename "$drop"
|
setx name=basename "$drop"
|
||||||
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
estep "$name"
|
estep "$name"
|
||||||
sed "s/@@database@@/$dbname/g" "$drop" | mysql_admin_qe || abort_on_error "drop: $name"
|
sed "s/@@database@@/$dbname/g" "$drop" | mysql_admin_qe || abort_on_error "drop: $name"
|
||||||
done
|
done
|
||||||
|
@ -1025,6 +1062,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
etitled "Création"
|
etitled "Création"
|
||||||
for create in "${creates[@]}"; do
|
for create in "${creates[@]}"; do
|
||||||
setx name=basename "$create"
|
setx name=basename "$create"
|
||||||
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
estep "$name"
|
estep "$name"
|
||||||
sed "s/@@database@@/$dbname/g" "$create" | mysql_admin_qe || abort_on_error "create: $name"
|
sed "s/@@database@@/$dbname/g" "$create" | mysql_admin_qe || abort_on_error "create: $name"
|
||||||
done
|
done
|
||||||
|
@ -1037,6 +1075,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
mysql_tbconf "$dbname"
|
mysql_tbconf "$dbname"
|
||||||
for update in "${updates[@]}"; do
|
for update in "${updates[@]}"; do
|
||||||
setx name=basename "$update"
|
setx name=basename "$update"
|
||||||
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
if have_tag admin "$update"; then
|
if have_tag admin "$update"; then
|
||||||
mysql_admin_update "$name" "$update"
|
mysql_admin_update "$name" "$update"
|
||||||
else
|
else
|
||||||
|
@ -1063,6 +1102,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
fi
|
fi
|
||||||
for drop in "${drops[@]}"; do
|
for drop in "${drops[@]}"; do
|
||||||
setx name=basename "$drop"
|
setx name=basename "$drop"
|
||||||
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
estep "$name"
|
estep "$name"
|
||||||
sed "s/@@database@@/$dbname/g" "$drop" | oracle_admin_ve || abort_on_error "drop: $name"
|
sed "s/@@database@@/$dbname/g" "$drop" | oracle_admin_ve || abort_on_error "drop: $name"
|
||||||
done
|
done
|
||||||
|
@ -1075,6 +1115,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
etitled "Création"
|
etitled "Création"
|
||||||
for create in "${creates[@]}"; do
|
for create in "${creates[@]}"; do
|
||||||
setx name=basename "$create"
|
setx name=basename "$create"
|
||||||
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
estep "$name"
|
estep "$name"
|
||||||
sed "s/@@database@@/$dbname/g" "$create" | oracle_admin_ve || abort_on_error "create: $name"
|
sed "s/@@database@@/$dbname/g" "$create" | oracle_admin_ve || abort_on_error "create: $name"
|
||||||
done
|
done
|
||||||
|
@ -1087,6 +1128,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
oracle_tbconf "$dbname"
|
oracle_tbconf "$dbname"
|
||||||
for update in "${updates[@]}"; do
|
for update in "${updates[@]}"; do
|
||||||
setx name=basename "$update"
|
setx name=basename "$update"
|
||||||
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
if have_tag admin "$update"; then
|
if have_tag admin "$update"; then
|
||||||
oracle_admin_update "$name" "$update"
|
oracle_admin_update "$name" "$update"
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue