结构修改
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
# 显示帮助信息
|
||||
|
||||
Reference in New Issue
Block a user