From 778bf0e9e73daabbd5e3d001b40ab825aaddcf01 Mon Sep 17 00:00:00 2001 From: Milky0217 Date: Sun, 19 Apr 2026 17:53:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20=E4=BF=AE=E5=A4=8D=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E6=89=A7=E8=A1=8C=E5=92=8C=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 迁移执行:使用 cat + pipe 替代 stdin 重定向,解决远程文件读取问题 2. 数据库表检测:修复 SQL 引号嵌套问题,使用正确的 psql 语法 --- deploy.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy.sh b/deploy.sh index f586f0e..478daca 100755 --- a/deploy.sh +++ b/deploy.sh @@ -761,9 +761,9 @@ test_database_connection() { log_info " 测试表存在..." local tables_result tables_result=$(ssh "${REMOTE_USER}@${REMOTE_HOST}" \ - "docker exec ${DB_CONTAINER} psql -U ${DB_USER} -d ${DB_NAME} -c 'SELECT tablename FROM pg_tables WHERE schemaname = 'public' LIMIT 5;' 2>/dev/null" || echo "failed") + "docker exec ${DB_CONTAINER} psql -U ${DB_USER} -d ${DB_NAME} -t -c 'SELECT tablename FROM pg_tables WHERE schemaname = '\''public'\'' LIMIT 5;' 2>/dev/null" || echo "failed") if [[ ! "$tables_result" =~ "users" ]]; then - log_warn " users 表不存在" + log_warn " users 表不存在或查询失败: ${tables_result}" return 1 fi log_info " users 表存在" @@ -1152,7 +1152,7 @@ run_migrations() { fi log_info " 执行迁移: $filename" - if ssh "${REMOTE_USER}@${REMOTE_HOST}" "docker exec -i ${DB_CONTAINER} psql -U ${DB_USER} -d ${DB_NAME}" < "$sql_file"; then + if ssh "${REMOTE_USER}@${REMOTE_HOST}" "cat \"${sql_file}\" | docker exec -i ${DB_CONTAINER} psql -U ${DB_USER} -d ${DB_NAME}"; then log_info " 完成: $filename" else log_warn " 迁移可能已执行或失败,继续"