Windows 8.1下PSQL -f参数执行时终端挂起问题求助
问题原因及解决办法
可能的原因
Windows 8.1上的Git Bash伪终端(pty)与psql的标准输入/文件读取逻辑存在兼容性问题,导致-f参数或重定向操作时终端挂起;另外相对路径解析、文件编码也可能是诱因。
解决办法
使用绝对路径指定SQL文件
把相对路径换成Git Bash识别的绝对路径,比如:psql.exe -U <user> -f /c/Users/你的用户名/项目目录/src/sql/test.sql或者用Windows原生路径加引号:
psql.exe -U <user> -f "C:\Users\你的用户名\项目目录\src\sql\test.sql"改用Windows原生终端执行命令
直接打开CMD或PowerShell,切换到项目目录后运行命令:psql.exe -U <user> -f src/sql/test.sql避开Git Bash的伪终端兼容性问题。
禁用Git Bash的伪终端
右键Git Bash快捷方式,修改「目标」字段,在末尾添加--no-pty:"C:\Program Files\Git\git-bash.exe" --no-pty重启Git Bash后再尝试执行原命令。
检查并修复SQL文件编码
用记事本打开test.sql,选择「另存为」,编码选择「UTF-8(无BOM)」,保存后再试。部分特殊编码或BOM头会导致psql读取文件时卡住。临时替代方案:用
-c参数传递文件内容
先读取文件内容再传给psql,命令如下:psql.exe -U <user> -c "$(cat src/sql/test.sql)"
内容的提问来源于stack exchange,提问作者FEZ_R
相关产品推荐
相关产品推荐

