fix(deploy): 修复迁移执行和数据库测试问题
1. 迁移执行:使用 cat + pipe 替代 stdin 重定向,解决远程文件读取问题 2. 数据库表检测:修复 SQL 引号嵌套问题,使用正确的 psql 语法
This commit is contained in:
@@ -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 " 迁移可能已执行或失败,继续"
|
||||
|
||||
Reference in New Issue
Block a user