create_database.sh: support different charset and collate settings for database creation.

This commit is contained in:
Christoph 2022-06-07 01:20:06 +02:00
parent aef387faad
commit c21a135b39

View File

@ -22,6 +22,8 @@ DATABASE_PASSWD_NEEDED=true
QUIET_MODE=false QUIET_MODE=false
NON_INTERACTIVE_MODE=false NON_INTERACTIVE_MODE=false
DATABASE_CHARACTER_SET=utf8mb4
# ------------- # -------------
# --- Some functions # --- Some functions
@ -476,6 +478,70 @@ if ! $NON_INTERACTIVE_MODE ; then
fi fi
fi fi
# - Set character-set for database
# -
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert character_set for Database '${DATABASE_NAME}'.."
echo ""
echo " possible values are"
echo " utf8mb4"
echo " utf8"
echo ""
if [ -z "$DATABASE_CHARACTER_SET" ]; then
echononl "Database user for database '${DATABASE_NAME}': "
read DATABASE_CHARACTER_SET
while [ "X$DATABASE_CHARACTER_SET" = "X" ] ; do
echo -e "\n\t\033[33m\033[1mEingabe erforderlich.\033[m\n"
echononl "Database user for database '${DATABASE_NAME}': "
read DATABASE_CHARACTER_SET
done
else
_DATABASE_CHARACTER_SET="$DATABASE_CHARACTER_SET"
echononl "Database user for database '${DATABASE_NAME}' [${_DATABASE_CHARACTER_SET}]: "
read DATABASE_CHARACTER_SET
if [[ "X$DATABASE_CHARACTER_SET" = "X" ]]; then
DATABASE_CHARACTER_SET=$_DATABASE_CHARACTER_SET
fi
fi
if [[ "${DATABASE_CHARACTER_SET}" = "utf8mb4" ]]; then
DATABASE_COLLATION="utf8mb4_unicode_ci"
else
DATABASE_COLLATION="utf8_bin"
fi
# - Set collation for databae
# -
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert collation for Database '${DATABASE_NAME}'.."
echo ""
echo " possible values are"
echo " utf8mb4_unicode_ci"
echo " utf8mb4_bin"
echo " utf8_bin"
echo ""
if [ -z "$DATABASE_COLLATION" ]; then
echononl "Database user for database '${DATABASE_NAME}': "
read DATABASE_COLLATION
while [ "X$DATABASE_COLLATION" = "X" ] ; do
echo -e "\n\t\033[33m\033[1mEingabe erforderlich.\033[m\n"
echononl "Database user for database '${DATABASE_NAME}': "
read DATABASE_COLLATION
done
else
_DATABASE_COLLATION="$DATABASE_COLLATION"
echononl "Database user for database '${DATABASE_NAME}' [${_DATABASE_COLLATION}]: "
read DATABASE_COLLATION
if [[ "X$DATABASE_COLLATION" = "X" ]]; then
DATABASE_COLLATION=$_DATABASE_COLLATION
fi
fi
echo "" echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
@ -598,6 +664,9 @@ if ! $QUIET_MODE ; then
echo " Database user................: $DATABASE_USER" echo " Database user................: $DATABASE_USER"
echo " Database password............: $DATABASE_PASSWD" echo " Database password............: $DATABASE_PASSWD"
echo "" echo ""
echo " Database character-set.......: $DATABASE_CHARACTER_SET"
echo " Database collation...........: $DATABASE_COLLATION"
echo ""
if $ACCESS_FROM_OUTSIDE ; then if $ACCESS_FROM_OUTSIDE ; then
echo " Access from outside..........: $IP_ADDRESSES" echo " Access from outside..........: $IP_ADDRESSES"
else else
@ -640,9 +709,9 @@ if [[ "$_result" = "$DATABASE_NAME" ]] ; then
fatal "Database '$DATABASE_NAME' already exists" fatal "Database '$DATABASE_NAME' already exists"
fi fi
echononl " Create database \033[1m$DATABASE_NAME\033[m (full UTF-8 support - utf8mb4)" echononl " Create database \033[1m$DATABASE_NAME\033[m (full UTF-8 support - ${DATABASE_CHARACTER_SET})"
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \ mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
"CREATE DATABASE $DATABASE_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" > $tmp_log_file 2>&1 "CREATE DATABASE $DATABASE_NAME CHARACTER SET ${DATABASE_CHARACTER_SET} COLLATE ${DATABASE_COLLATION}" > $tmp_log_file 2>&1
if [[ $? -ne 0 ]] ; then if [[ $? -ne 0 ]] ; then
echo_failed echo_failed
error "$(cat $tmp_log_file)" error "$(cat $tmp_log_file)"