From c21a135b3949d996f9c7175ca734a718a17c62d5 Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 7 Jun 2022 01:20:06 +0200 Subject: [PATCH] create_database.sh: support different charset and collate settings for database creation. --- create_database.sh | 73 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/create_database.sh b/create_database.sh index 4d11072..9e2acab 100755 --- a/create_database.sh +++ b/create_database.sh @@ -22,6 +22,8 @@ DATABASE_PASSWD_NEEDED=true QUIET_MODE=false NON_INTERACTIVE_MODE=false +DATABASE_CHARACTER_SET=utf8mb4 + # ------------- # --- Some functions @@ -476,6 +478,70 @@ if ! $NON_INTERACTIVE_MODE ; then 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 -e "\033[32m--\033[m" echo "" @@ -598,6 +664,9 @@ if ! $QUIET_MODE ; then echo " Database user................: $DATABASE_USER" echo " Database password............: $DATABASE_PASSWD" echo "" + echo " Database character-set.......: $DATABASE_CHARACTER_SET" + echo " Database collation...........: $DATABASE_COLLATION" + echo "" if $ACCESS_FROM_OUTSIDE ; then echo " Access from outside..........: $IP_ADDRESSES" else @@ -640,9 +709,9 @@ if [[ "$_result" = "$DATABASE_NAME" ]] ; then fatal "Database '$DATABASE_NAME' already exists" 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 \ - "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 echo_failed error "$(cat $tmp_log_file)"