sqlmig: support des suffixes pour les noms de base de données
This commit is contained in:
parent
9600fb801a
commit
4b85c93251
71
sqlmig
71
sqlmig
|
@ -71,6 +71,11 @@ OPTIONS
|
||||||
valeurs remplacent les valeurs par défaut chargées depuis my.cnf
|
valeurs remplacent les valeurs par défaut chargées depuis my.cnf
|
||||||
Les options --sid et --nls-lang ne sont valides que pour Oracle. Ces
|
Les options --sid et --nls-lang ne sont valides que pour Oracle. Ces
|
||||||
valeurs remplacent les valeurs par défaut chargées depuis ora.conf
|
valeurs remplacent les valeurs par défaut chargées depuis ora.conf
|
||||||
|
--suffix SUFFIX
|
||||||
|
Lors de la connexion à la base de données, toujours ajouter le suffixe
|
||||||
|
spécifié au nom de la base de données. Cette valeur peut être spécifiée
|
||||||
|
dans la section [sqlmig] du fichier my.cnf ou avec la variable SUFFIX
|
||||||
|
pour ora.conf
|
||||||
|
|
||||||
--profile PROFILE
|
--profile PROFILE
|
||||||
-P, --prod
|
-P, --prod
|
||||||
|
@ -114,6 +119,8 @@ OPTIONS
|
||||||
données est calculé à partir du nom du répertoire DATABASEDIR. Cette
|
données est calculé à partir du nom du répertoire DATABASEDIR. Cette
|
||||||
option peut être utilisée par exemple pour créer une base de test à
|
option peut être utilisée par exemple pour créer une base de test à
|
||||||
partir des définitions d'une base de prod.
|
partir des définitions d'une base de prod.
|
||||||
|
Notez que le suffixe spécifié avec l'option --suffix est toujours
|
||||||
|
rajouté au nom de la base de données.
|
||||||
-f, --update-one UPDATE
|
-f, --update-one UPDATE
|
||||||
Forcer l'application de la mise à jour spécifiée. Ne pas mettre à jour
|
Forcer l'application de la mise à jour spécifiée. Ne pas mettre à jour
|
||||||
l'état des mises à jour installées. Avec cette option, tout se passe
|
l'état des mises à jour installées. Avec cette option, tout se passe
|
||||||
|
@ -147,6 +154,20 @@ OPTIONS
|
||||||
Créer la base de données uniquement. Ne pas appliquer les mises à jour"
|
Créer la base de données uniquement. Ne pas appliquer les mises à jour"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function mconf_get() {
|
||||||
|
local cnf="$1" section="$2" name="$3"
|
||||||
|
awkrun <"$cnf" section="$section" name="$name" '
|
||||||
|
BEGIN { in_section = 0 }
|
||||||
|
!in_section && $0 == "[" section "]" { in_section = 1; next }
|
||||||
|
in_section && $0 == "[" section "]" { in_section = 0; next }
|
||||||
|
in_section && $0 ~ "^" name " *=" {
|
||||||
|
gsub(/^[^=]*= */, "")
|
||||||
|
print
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
||||||
function __check_devel_dir() {
|
function __check_devel_dir() {
|
||||||
# $1 = P (le préfixe)
|
# $1 = P (le préfixe)
|
||||||
# parentdir et cwd doivent être définis. initialiser le cas échéant la
|
# parentdir et cwd doivent être définis. initialiser le cas échéant la
|
||||||
|
@ -383,7 +404,7 @@ function mysql_get_defaults() {
|
||||||
function mysql_set_adminargs() {
|
function mysql_set_adminargs() {
|
||||||
local dir="$1" defaults
|
local dir="$1" defaults
|
||||||
adminargs=()
|
adminargs=()
|
||||||
setx defaults=mysql_get_defaults
|
setx defaults=mysql_get_defaults "$dir"
|
||||||
if [ -f "$defaults" ]; then
|
if [ -f "$defaults" ]; then
|
||||||
array_add adminargs --defaults-file="$defaults"
|
array_add adminargs --defaults-file="$defaults"
|
||||||
if [ -n "$admindefaults" ]; then
|
if [ -n "$admindefaults" ]; then
|
||||||
|
@ -395,20 +416,41 @@ function mysql_set_adminargs() {
|
||||||
[ ${#adminargs[*]} -gt 0 ] || array_add adminargs --default-character-set utf8
|
[ ${#adminargs[*]} -gt 0 ] || array_add adminargs --default-character-set utf8
|
||||||
}
|
}
|
||||||
function mysql_set_userargs() {
|
function mysql_set_userargs() {
|
||||||
local dir="$1" dbname="$2" defaults
|
local dir="$1" dbname="$2" defaults set_suffix tmpsuffix
|
||||||
userargs=()
|
userargs=()
|
||||||
setx defaults=mysql_get_defaults
|
setx defaults=mysql_get_defaults "$dir"
|
||||||
|
[ -z "$suffix" ] && set_suffix=1
|
||||||
if [ -f "$defaults" ]; then
|
if [ -f "$defaults" ]; then
|
||||||
array_add userargs --defaults-file="$defaults"
|
array_add userargs --defaults-file="$defaults"
|
||||||
|
if [ -n "$set_suffix" ]; then
|
||||||
|
setx tmpsuffix=mconf_get "$defaults" sqlmig suffix
|
||||||
|
[ -n "$tmpsuffix" ] && suffix="$tmpsuffix"
|
||||||
|
fi
|
||||||
if [ -n "$userdefaults" ]; then
|
if [ -n "$userdefaults" ]; then
|
||||||
array_add userargs --defaults-extra-file="$userdefaults"
|
array_add userargs --defaults-extra-file="$userdefaults"
|
||||||
|
if [ -n "$set_suffix" ]; then
|
||||||
|
setx tmpsuffix=mconf_get "$userdefaults" sqlmig suffix
|
||||||
|
[ -n "$tmpsuffix" ] && suffix="$tmpsuffix"
|
||||||
|
fi
|
||||||
elif [ -f "$dir/my-${dbname}.cnf" ]; then
|
elif [ -f "$dir/my-${dbname}.cnf" ]; then
|
||||||
array_add userargs --defaults-extra-file="$dir/my-${dbname}.cnf"
|
array_add userargs --defaults-extra-file="$dir/my-${dbname}.cnf"
|
||||||
|
if [ -n "$set_suffix" ]; then
|
||||||
|
setx tmpsuffix=mconf_get "$dir/my-${dbname}.cnf" sqlmig suffix
|
||||||
|
[ -n "$tmpsuffix" ] && suffix="$tmpsuffix"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
elif [ -n "$userdefaults" ]; then
|
elif [ -n "$userdefaults" ]; then
|
||||||
array_add userargs --defaults-file="$userdefaults"
|
array_add userargs --defaults-file="$userdefaults"
|
||||||
|
if [ -n "$set_suffix" ]; then
|
||||||
|
setx tmpsuffix=mconf_get "$userdefaults" sqlmig suffix
|
||||||
|
[ -n "$tmpsuffix" ] && suffix="$tmpsuffix"
|
||||||
|
fi
|
||||||
elif [ -f "$dir/my-${dbname}.cnf" ]; then
|
elif [ -f "$dir/my-${dbname}.cnf" ]; then
|
||||||
array_add userargs --defaults-file="$dir/my-${dbname}.cnf"
|
array_add userargs --defaults-file="$dir/my-${dbname}.cnf"
|
||||||
|
if [ -n "$set_suffix" ]; then
|
||||||
|
setx tmpsuffix=mconf_get "$dir/my-${dbname}.cnf" sqlmig suffix
|
||||||
|
[ -n "$tmpsuffix" ] && suffix="$tmpsuffix"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
[ ${#userargs[*]} -gt 0 ] || array_add userargs --default-character-set utf8
|
[ ${#userargs[*]} -gt 0 ] || array_add userargs --default-character-set utf8
|
||||||
}
|
}
|
||||||
|
@ -711,7 +753,7 @@ function oracle_get_defaults() {
|
||||||
function oracle_source_adminconf() {
|
function oracle_source_adminconf() {
|
||||||
local dir="$1"
|
local dir="$1"
|
||||||
unset ORACLE_SID NLS_LANG ADMINCONNECT USERCONNECT SQLMIGLOG
|
unset ORACLE_SID NLS_LANG ADMINCONNECT USERCONNECT SQLMIGLOG
|
||||||
setx defaults=oracle_get_defaults
|
setx defaults=oracle_get_defaults "$dir"
|
||||||
[ -f "$defaults" ] && source "$defaults"
|
[ -f "$defaults" ] && source "$defaults"
|
||||||
[ -n "$admindefaults" ] && {
|
[ -n "$admindefaults" ] && {
|
||||||
source "$admindefaults" || die
|
source "$admindefaults" || die
|
||||||
|
@ -729,8 +771,8 @@ function oracle_source_adminconf() {
|
||||||
}
|
}
|
||||||
function oracle_source_userconf() {
|
function oracle_source_userconf() {
|
||||||
local dir="$1" dbname="$2"
|
local dir="$1" dbname="$2"
|
||||||
unset ORACLE_SID NLS_LANG ADMINCONNECT USERCONNECT SQLMIGLOG
|
unset ORACLE_SID NLS_LANG ADMINCONNECT USERCONNECT SQLMIGLOG SUFFIX
|
||||||
setx defaults=oracle_get_defaults
|
setx defaults=oracle_get_defaults "$dir"
|
||||||
[ -f "$defaults" ] && source "$defaults"
|
[ -f "$defaults" ] && source "$defaults"
|
||||||
[ -f "$dir/ora-${dbname}.conf" ] && source "$dir/ora-${dbname}.conf"
|
[ -f "$dir/ora-${dbname}.conf" ] && source "$dir/ora-${dbname}.conf"
|
||||||
[ -n "$userdefaults" ] && {
|
[ -n "$userdefaults" ] && {
|
||||||
|
@ -752,6 +794,7 @@ function oracle_source_userconf() {
|
||||||
USERDBA=1
|
USERDBA=1
|
||||||
fi
|
fi
|
||||||
[ -n "$SQLMIGLOG" ] || SQLMIGLOG="/tmp/sqlmig-${ORACLE_SID}-${dbname}.log"
|
[ -n "$SQLMIGLOG" ] || SQLMIGLOG="/tmp/sqlmig-${ORACLE_SID}-${dbname}.log"
|
||||||
|
[ -z "$suffix" ] && suffix="$SUFFIX"
|
||||||
}
|
}
|
||||||
ORACLE_ADMIN_CONF_DONE=
|
ORACLE_ADMIN_CONF_DONE=
|
||||||
function oracle_admin_update() {
|
function oracle_admin_update() {
|
||||||
|
@ -814,6 +857,7 @@ socket=
|
||||||
charset=
|
charset=
|
||||||
oracle_sid=
|
oracle_sid=
|
||||||
nls_lang=
|
nls_lang=
|
||||||
|
suffix=
|
||||||
profile=
|
profile=
|
||||||
type=auto
|
type=auto
|
||||||
action=update
|
action=update
|
||||||
|
@ -840,6 +884,7 @@ args=(
|
||||||
--character-set: charset=
|
--character-set: charset=
|
||||||
-s:,--oracle-sid: oracle_sid=
|
-s:,--oracle-sid: oracle_sid=
|
||||||
--nls-lang: nls_lang=
|
--nls-lang: nls_lang=
|
||||||
|
--suffix: suffix=
|
||||||
--profile: profile=
|
--profile: profile=
|
||||||
-P,--prod profile=prod
|
-P,--prod profile=prod
|
||||||
-T,--test profile=test
|
-T,--test profile=test
|
||||||
|
@ -997,7 +1042,7 @@ elif [ "$action" == export ]; then
|
||||||
if [ -n "$dbdir" ]; then
|
if [ -n "$dbdir" ]; then
|
||||||
dbdirs=("$dbdir")
|
dbdirs=("$dbdir")
|
||||||
elif [ -z "$updatedir" ]; then
|
elif [ -z "$updatedir" ]; then
|
||||||
array_lsfiles files . "*.sql" "*my.cnf" "*ora.conf"
|
array_lsfiles files . "*.sql" "*my.cnf" "my-*.cnf" "*ora.conf" "ora-*.conf"
|
||||||
if [ ${#files[*]} -gt 0 ]; then
|
if [ ${#files[*]} -gt 0 ]; then
|
||||||
enote "Autosélection répertoire courant"
|
enote "Autosélection répertoire courant"
|
||||||
dbdir="$cwd"
|
dbdir="$cwd"
|
||||||
|
@ -1104,9 +1149,11 @@ fi
|
||||||
|
|
||||||
## mises à jour utilisateur
|
## mises à jour utilisateur
|
||||||
force_dbname="$dbname"
|
force_dbname="$dbname"
|
||||||
|
force_suffix="$suffix"
|
||||||
for dbdir in "${dbdirs[@]}"; do
|
for dbdir in "${dbdirs[@]}"; do
|
||||||
dbname="$force_dbname"
|
dbname="$force_dbname"
|
||||||
[ -n "$dbname" ] || setx dbname=basename "$dbdir"
|
[ -n "$dbname" ] || setx dbname=basename "$dbdir"
|
||||||
|
suffix="$force_suffix"
|
||||||
etitle "$dbname"
|
etitle "$dbname"
|
||||||
|
|
||||||
ensure_dbtype "$dbdir" "$type"
|
ensure_dbtype "$dbdir" "$type"
|
||||||
|
@ -1162,6 +1209,11 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
mysql_set_userargs "$dbdir" "$dbname"
|
mysql_set_userargs "$dbdir" "$dbname"
|
||||||
mysql_set_mysqlargs
|
mysql_set_mysqlargs
|
||||||
|
|
||||||
|
if [ -n "$suffix" ]; then
|
||||||
|
estepi "Suffixe: $dbname --> $dbname$suffix"
|
||||||
|
dbname="$dbname$suffix"
|
||||||
|
fi
|
||||||
|
|
||||||
# Suppression
|
# Suppression
|
||||||
if [ -n "$drop" ]; then
|
if [ -n "$drop" ]; then
|
||||||
[ "$dbmode" == devel ] || die "La suppression de base de données n'est pas autorisée en mode production"
|
[ "$dbmode" == devel ] || die "La suppression de base de données n'est pas autorisée en mode production"
|
||||||
|
@ -1222,6 +1274,11 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
oracle_source_userconf "$dbdir" "$dbname"
|
oracle_source_userconf "$dbdir" "$dbname"
|
||||||
oracle_ensure_opdir
|
oracle_ensure_opdir
|
||||||
|
|
||||||
|
if [ -n "$suffix" ]; then
|
||||||
|
estepi "Suffixe: $dbname --> $dbname$suffix"
|
||||||
|
dbname="$dbname$suffix"
|
||||||
|
fi
|
||||||
|
|
||||||
# Suppression
|
# Suppression
|
||||||
if [ -n "$drop" ]; then
|
if [ -n "$drop" ]; then
|
||||||
[ "$dbmode" == devel ] || die "La suppression de user n'est pas autorisée en mode production"
|
[ "$dbmode" == devel ] || die "La suppression de user n'est pas autorisée en mode production"
|
||||||
|
|
Loading…
Reference in New Issue