Files
Toys-A 23c2912ea8 fix(nacos): Avoid reimporting existing schema
- 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
2026-08-07 03:45:01 +08:00

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