结构修改

This commit is contained in:
2025-12-12 18:17:56 +08:00
parent 0a72416365
commit e66eb6b575
9 changed files with 192 additions and 99 deletions

View File

@@ -222,17 +222,37 @@ reinit() {
delete() {
echo -e "${YELLOW}Deleting database...${NC}"
# 确保没有活动连接
PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "postgres" -c "
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = '$DB_NAME'
AND pid <> pg_backend_pid();"
# 多次尝试终止连接(因为某些连接可能会立即重连)
for i in {1..3}; do
log "INFO" "Terminating database connections (attempt $i/3)..."
PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "postgres" -c "
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = '$DB_NAME'
AND pid <> pg_backend_pid();" > /dev/null 2>&1
# 等待连接完全关闭
sleep 1
done
# 删除数据库
PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "postgres" -c "DROP DATABASE IF EXISTS $DB_NAME;"
# 尝试删除数据库最多重试3次
for i in {1..3}; do
log "INFO" "Attempting to drop database (attempt $i/3)..."
if PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "postgres" -c "DROP DATABASE IF EXISTS $DB_NAME;" 2>&1; then
log "SUCCESS" "Database deleted successfully"
return 0
else
log "WARN" "Failed to drop database, retrying after 2 seconds..."
sleep 2
fi
done
echo -e "${GREEN}Database deleted.${NC}"
log "ERROR" "Failed to delete database after 3 attempts"
log "ERROR" "Please ensure all connections to the database are closed, including:"
log "ERROR" " - Running application servers"
log "ERROR" " - IDE database connections"
log "ERROR" " - pgAdmin or other database tools"
return 1
}
# 显示帮助信息