feat(scripts): 添加数据库检查脚本

检查所有微服务的数据库和数据表是否已创建。

使用方法: ./scripts/check-databases.sh

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Developer 2025-12-04 02:35:29 -08:00
parent 9e0adca3d3
commit f63606ce8f
1 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,95 @@
#!/bin/bash
#
# 检查所有微服务的数据库和数据表
#
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ENV_FILE="$SCRIPT_DIR/../.env"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# Load environment variables
if [ -f "$ENV_FILE" ]; then
source "$ENV_FILE"
fi
POSTGRES_USER="${POSTGRES_USER:-rwa_user}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-rwa_secure_password}"
# 服务与数据库映射
declare -A SERVICES=(
["identity-service"]="rwa_identity"
["wallet-service"]="rwa_wallet"
["backup-service"]="rwa_backup"
["planting-service"]="rwa_planting"
["referral-service"]="rwa_referral"
["reward-service"]="rwa_reward"
["mpc-service"]="rwa_mpc"
["leaderboard-service"]="rwa_leaderboard"
["reporting-service"]="rwa_reporting"
["authorization-service"]="rwa_authorization"
["admin-service"]="rwa_admin"
["presence-service"]="rwa_presence"
)
echo "============================================"
echo "RWA 微服务数据库检查"
echo "============================================"
echo ""
total=0
success=0
failed=0
for service in "${!SERVICES[@]}"; do
db="${SERVICES[$service]}"
total=$((total + 1))
echo -n "检查 $service ($db): "
# 检查数据库是否存在
db_exists=$(docker exec rwa-postgres psql -U "$POSTGRES_USER" -tAc "SELECT 1 FROM pg_database WHERE datname='$db'" 2>/dev/null || echo "")
if [ "$db_exists" != "1" ]; then
echo -e "${RED}数据库不存在${NC}"
failed=$((failed + 1))
continue
fi
# 获取表数量
table_count=$(docker exec rwa-postgres psql -U "$POSTGRES_USER" -d "$db" -tAc "SELECT count(*) FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE'" 2>/dev/null || echo "0")
if [ "$table_count" -eq 0 ]; then
echo -e "${YELLOW}数据库存在,但无表${NC}"
failed=$((failed + 1))
else
echo -e "${GREEN}OK${NC} ($table_count 张表)"
success=$((success + 1))
# 显示表列表
tables=$(docker exec rwa-postgres psql -U "$POSTGRES_USER" -d "$db" -tAc "SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE' ORDER BY table_name" 2>/dev/null || echo "")
if [ -n "$tables" ]; then
echo "$tables" | while read -r table; do
if [ -n "$table" ]; then
echo " - $table"
fi
done
fi
fi
echo ""
done
echo "============================================"
echo "总结: $success/$total 个服务数据库正常"
if [ $failed -gt 0 ]; then
echo -e "${RED}$failed 个服务存在问题${NC}"
exit 1
else
echo -e "${GREEN}所有服务数据库正常${NC}"
fi