You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下Git Bash导入PostgreSQL12 SQL文件时‘stdin is not a tty’错误如何解决?

解决Git Bash中PostgreSQL导入SQL脚本的"stdin is not a tty"错误

这个错误是Git Bash的终端兼容性问题导致的——Windows的伪终端和类Unix环境的tty不匹配,psql没法正确读取重定向的输入内容,所以脚本没执行。

给你几个可行的解决办法:

  • 用psql的-f参数直接指定脚本(推荐)
    避开重定向操作,直接让psql加载脚本文件,命令改成:

    PGPASSWORD=$DB_PASSWORD psql -U ${DB_USER} -d ${DB_NAME} -f scripts/my-script.sql
    

    -f参数专门用来指定要执行的SQL脚本路径,完全绕开stdin重定向的问题,最稳定。

  • 用winpty包装psql命令
    Git Bash自带的winpty工具可以解决Windows终端和类Unix工具的兼容问题,把原命令改成:

    PGPASSWORD=$DB_PASSWORD winpty psql -U ${DB_USER} ${DB_NAME} < scripts/my-script.sql
    
  • 切换到Windows原生终端执行
    直接打开CMD或PowerShell,先设置环境变量(CMD里用set PGPASSWORD=你的密码,PowerShell里用$env:PGPASSWORD='你的密码'),再执行导入命令:

    psql -U 用户名 数据库名 < scripts/my-script.sql
    

    原生Windows终端不会有tty不匹配的问题。

另外要确认:scripts/my-script.sql的路径在Git Bash里是正确的类Unix格式,同时DB_USER和DB_PASSWORD环境变量已经正确设置,能正常连接到本地PostgreSQL 12数据库。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 09:54:22