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
相关产品推荐
相关产品推荐

