Files
junhong_cmp_fiber/scripts/reset_db.sh

41 lines
1.4 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 重置数据库到干净状态(仅用于开发/测试环境)
# 用途:将数据库从任意状态重置为全新的生产基线
# 警告:此操作会清空所有数据,不可恢复!
set -e
DB_NAME="${JUNHONG_DATABASE_DBNAME:-junhong_cmp}"
DB_HOST="${JUNHONG_DATABASE_HOST:-localhost}"
DB_PORT="${JUNHONG_DATABASE_PORT:-5432}"
DB_USER="${JUNHONG_DATABASE_USER:-postgres}"
DB_PASSWORD="${JUNHONG_DATABASE_PASSWORD:-}"
if [ -z "$DB_HOST" ] || [ -z "$DB_USER" ] || [ -z "$DB_NAME" ]; then
echo "错误:必须设置以下环境变量:"
echo " JUNHONG_DATABASE_HOST"
echo " JUNHONG_DATABASE_USER"
echo " JUNHONG_DATABASE_DBNAME"
exit 1
fi
DB_DSN="postgres://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}?sslmode=disable"
ADMIN_DSN="postgres://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/postgres?sslmode=disable"
echo "警告:即将清空数据库 ${DB_NAME}${DB_HOST}:${DB_PORT}5 秒后继续..."
echo "按 Ctrl+C 取消"
sleep 5
echo "正在删除数据库 ${DB_NAME}..."
PGPASSWORD="${DB_PASSWORD}" psql "${ADMIN_DSN}" -c "DROP DATABASE IF EXISTS ${DB_NAME};"
echo "正在创建数据库 ${DB_NAME}..."
PGPASSWORD="${DB_PASSWORD}" psql "${ADMIN_DSN}" -c "CREATE DATABASE ${DB_NAME};"
echo "正在执行数据库迁移..."
migrate -path migrations -database "${DB_DSN}" up
echo "数据库重置完成!"
echo "当前迁移状态:"
migrate -path migrations -database "${DB_DSN}" version