23c2912ea8
- Check for the Nacos config table before importing schema - Preserve config seeding only when no config rows exist - Prevent init failures when the database is already initialized
40 lines
1.2 KiB
Bash
40 lines
1.2 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
: "${MYSQL_ROOT_PASSWORD:?MYSQL_ROOT_PASSWORD is required}"
|
|
|
|
MYSQL_HOST="${MYSQL_HOST:-mysql}"
|
|
MYSQL_PORT="${MYSQL_PORT:-3306}"
|
|
MYSQL_DB="${MYSQL_DB:-nacos_config}"
|
|
MYSQL_USER="${MYSQL_USER:-root}"
|
|
|
|
export MYSQL_PWD="$MYSQL_ROOT_PASSWORD"
|
|
|
|
mysql_exec() {
|
|
mysql --default-character-set=utf8mb4 -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u"$MYSQL_USER" "$@"
|
|
}
|
|
|
|
echo "Preparing Nacos database ${MYSQL_DB}..."
|
|
mysql_exec -e "CREATE DATABASE IF NOT EXISTS \`${MYSQL_DB}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
|
|
schema_exists="$(mysql_exec -N -s -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${MYSQL_DB}' AND TABLE_NAME='config_info';" 2>/dev/null || echo 0)"
|
|
if [ "${schema_exists}" -eq 0 ]; then
|
|
echo "Initializing Nacos schema..."
|
|
mysql_exec "$MYSQL_DB" < /init-sql/nacos-schema.sql
|
|
else
|
|
echo "Nacos schema already exists, skip schema import."
|
|
fi
|
|
|
|
if row_count="$(mysql_exec -N -s -e "SELECT COUNT(*) FROM \`${MYSQL_DB}\`.config_info;" 2>/dev/null)"; then
|
|
:
|
|
else
|
|
row_count=0
|
|
fi
|
|
|
|
if [ "${row_count}" -eq 0 ]; then
|
|
echo "Seeding default Nacos configs..."
|
|
mysql_exec "$MYSQL_DB" < /init-sql/nacos-config-init.sql
|
|
else
|
|
echo "Nacos config already exists, skip seeding."
|
|
fi
|