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
|
||||
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
|
||||
--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
|
||||
-P, --prod
|
||||
|
@ -114,6 +119,8 @@ OPTIONS
|
|||
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 à
|
||||
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
|
||||
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
|
||||
|
@ -147,6 +154,20 @@ OPTIONS
|
|||
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() {
|
||||
# $1 = P (le préfixe)
|
||||
# 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() {
|
||||
local dir="$1" defaults
|
||||
adminargs=()
|
||||
setx defaults=mysql_get_defaults
|
||||
setx defaults=mysql_get_defaults "$dir"
|
||||
if [ -f "$defaults" ]; then
|
||||
array_add adminargs --defaults-file="$defaults"
|
||||
if [ -n "$admindefaults" ]; then
|
||||
|
@ -395,20 +416,41 @@ function mysql_set_adminargs() {
|
|||
[ ${#adminargs[*]} -gt 0 ] || array_add adminargs --default-character-set utf8
|
||||
}
|
||||
function mysql_set_userargs() {
|
||||
local dir="$1" dbname="$2" defaults
|
||||
local dir="$1" dbname="$2" defaults set_suffix tmpsuffix
|
||||
userargs=()
|
||||
setx defaults=mysql_get_defaults
|
||||
setx defaults=mysql_get_defaults "$dir"
|
||||
[ -z "$suffix" ] && set_suffix=1
|
||||
if [ -f "$defaults" ]; then
|
||||
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
|
||||
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
|
||||
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
|
||||
elif [ -n "$userdefaults" ]; then
|
||||
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
|
||||
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
|
||||
[ ${#userargs[*]} -gt 0 ] || array_add userargs --default-character-set utf8
|
||||
}
|
||||
|
@ -711,7 +753,7 @@ function oracle_get_defaults() {
|
|||
function oracle_source_adminconf() {
|
||||
local dir="$1"
|
||||
unset ORACLE_SID NLS_LANG ADMINCONNECT USERCONNECT SQLMIGLOG
|
||||
setx defaults=oracle_get_defaults
|
||||
setx defaults=oracle_get_defaults "$dir"
|
||||
[ -f "$defaults" ] && source "$defaults"
|
||||
[ -n "$admindefaults" ] && {
|
||||
source "$admindefaults" || die
|
||||
|
@ -729,8 +771,8 @@ function oracle_source_adminconf() {
|
|||
}
|
||||
function oracle_source_userconf() {
|
||||
local dir="$1" dbname="$2"
|
||||
unset ORACLE_SID NLS_LANG ADMINCONNECT USERCONNECT SQLMIGLOG
|
||||
setx defaults=oracle_get_defaults
|
||||
unset ORACLE_SID NLS_LANG ADMINCONNECT USERCONNECT SQLMIGLOG SUFFIX
|
||||
setx defaults=oracle_get_defaults "$dir"
|
||||
[ -f "$defaults" ] && source "$defaults"
|
||||
[ -f "$dir/ora-${dbname}.conf" ] && source "$dir/ora-${dbname}.conf"
|
||||
[ -n "$userdefaults" ] && {
|
||||
|
@ -752,6 +794,7 @@ function oracle_source_userconf() {
|
|||
USERDBA=1
|
||||
fi
|
||||
[ -n "$SQLMIGLOG" ] || SQLMIGLOG="/tmp/sqlmig-${ORACLE_SID}-${dbname}.log"
|
||||
[ -z "$suffix" ] && suffix="$SUFFIX"
|
||||
}
|
||||
ORACLE_ADMIN_CONF_DONE=
|
||||
function oracle_admin_update() {
|
||||
|
@ -814,6 +857,7 @@ socket=
|
|||
charset=
|
||||
oracle_sid=
|
||||
nls_lang=
|
||||
suffix=
|
||||
profile=
|
||||
type=auto
|
||||
action=update
|
||||
|
@ -840,6 +884,7 @@ args=(
|
|||
--character-set: charset=
|
||||
-s:,--oracle-sid: oracle_sid=
|
||||
--nls-lang: nls_lang=
|
||||
--suffix: suffix=
|
||||
--profile: profile=
|
||||
-P,--prod profile=prod
|
||||
-T,--test profile=test
|
||||
|
@ -997,7 +1042,7 @@ elif [ "$action" == export ]; then
|
|||
if [ -n "$dbdir" ]; then
|
||||
dbdirs=("$dbdir")
|
||||
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
|
||||
enote "Autosélection répertoire courant"
|
||||
dbdir="$cwd"
|
||||
|
@ -1104,9 +1149,11 @@ fi
|
|||
|
||||
## mises à jour utilisateur
|
||||
force_dbname="$dbname"
|
||||
force_suffix="$suffix"
|
||||
for dbdir in "${dbdirs[@]}"; do
|
||||
dbname="$force_dbname"
|
||||
[ -n "$dbname" ] || setx dbname=basename "$dbdir"
|
||||
suffix="$force_suffix"
|
||||
etitle "$dbname"
|
||||
|
||||
ensure_dbtype "$dbdir" "$type"
|
||||
|
@ -1162,6 +1209,11 @@ for dbdir in "${dbdirs[@]}"; do
|
|||
mysql_set_userargs "$dbdir" "$dbname"
|
||||
mysql_set_mysqlargs
|
||||
|
||||
if [ -n "$suffix" ]; then
|
||||
estepi "Suffixe: $dbname --> $dbname$suffix"
|
||||
dbname="$dbname$suffix"
|
||||
fi
|
||||
|
||||
# Suppression
|
||||
if [ -n "$drop" ]; then
|
||||
[ "$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_ensure_opdir
|
||||
|
||||
if [ -n "$suffix" ]; then
|
||||
estepi "Suffixe: $dbname --> $dbname$suffix"
|
||||
dbname="$dbname$suffix"
|
||||
fi
|
||||
|
||||
# Suppression
|
||||
if [ -n "$drop" ]; then
|
||||
[ "$dbmode" == devel ] || die "La suppression de user n'est pas autorisée en mode production"
|
||||
|
|
Loading…
Reference in New Issue