MySQL Git Bash winpty mysqldump stdout不是tty,stdin也不是tty
请使用MySQL Git Bash winpty mysqldump提供帮助。“winpty mysqldump”在Git Bash中不起作用。以下是错误的详细信息: Git BashMySQL Git Bash winpty mysqldump stdout不是tty,stdin也不是tty,mysql,git-bash,Mysql,Git Bash,请使用MySQL Git Bash winpty mysqldump提供帮助。“winpty mysqldump”在Git Bash中不起作用。以下是错误的详细信息: Git Bash $ winpty mysqldump -u root -p employeedb > "E:\Working\SQL\MySQL\MySQL-Queries\mysqldump\SQL-dump\employeedb_backup.sql" stdout is not a tty $ winpty mys
$ winpty mysqldump -u root -p employeedb > "E:\Working\SQL\MySQL\MySQL-Queries\mysqldump\SQL-dump\employeedb_backup.sql"
stdout is not a tty
$ winpty mysql -u root -p employeedb < "E:\Working\SQL\MySQL\MySQL-Queries\mysqldump\SQL-dump\employeedb_backup.sql"
stdin is not a tty
请帮助我们了解winpty mysqldump/winpty mysql和stdout/stdin tty
没有winpty的Git Bash“mysqldump”不起作用:
命令$mysqldump-u root-p employeedb>“E:\Working\SQL\MySQL\MySQL querys\mysqldump\SQL dump\employeedb\u backup.SQL”刚刚冻结
请参阅大小为0 KB的“employeedb_backup.sql”脚本
谢谢该错误实际上来自
winpty
,因为您正试图将输出重定向到一个文件,它需要一个交互使用的终端
通常,本机Git bash命令(如Git
、ssh
)和所有输出重定向(如node--version | clip
)应该在没有winpty
的情况下工作
这些mysql
命令的不同之处在于,它们在重定向输出之前需要交互式输入(用于输入密码)。为了正确工作,我们需要使它们在不使用输出重定向的情况下通过winpty
运行
$ winpty mysqldump -u USER -p DB_NAME -r OUTPUT.sql
Enter password: ******
--结果文件=文件名,-r文件名直接输出到给定的文件。此选项应在Windows上使用,以防止换行符“\n”字符转换为“\r\n”回车/换行符序列。即使生成转储时出错,也会创建结果文件并覆盖其以前的内容
我在Windows 10上使用git bash时遇到了类似的问题(使用php命令) 我通过将扩展名(.exe)附加到php来修复它 编辑: 如果不想将.exe附加到所有命令中,也可以添加别名,如下所示:
$ printf "\nalias mysql='mysql.exe'" >> ~/.bashrc
没有winpty的Git Bash“mysqldump”无法工作:命令$mysqldump-u root-p employeedb>“E:\Working\SQL\MySQL\MySQL查询\mysqldump\SQL dump\employeedb\u backup.SQL”只是冻结。请参阅大小为0 KB的“employeedb_backup.sql”脚本。糟糕,我没有意识到,如果您有密码,则需要交互式tty来插入凭据。修复了我的答案。谢谢你的回答。我希望能够用git bash shell做一些类似于
mysql-u XX-p YY
的事情,但是它不起作用,即使使用winpty(我可以用winpty自己启动mysql)。在一个命令上使用输入重定向调用mysql是不可能的吗?也就是说,我是否必须进入mysql,然后始终发出源代码命令?由于winpty
施加的限制,我没有找到在单个命令行中进行导入的方法。您最好的选择可能是源代码命令(显示在我答案的底部)。我需要使用php.exe
技巧来获得一个复杂的命令。我花了一个小时试图找出错误所在。Windows上那些tty
错误真的很糟糕。尝试了一些eval的东西,看到了winpty这个词,然后找到了这个线索。只希望这不是Windows特定的修复程序,这样我就可以在其他操作系统上使用相同的命令。@Ultimater,我在Linux中从未遇到过这个问题,我也不认为它在Mac Os中发生过。创建别名时,您可以在Windows中使用标准命令(不使用.exe),因此您的命令对于所有操作系统都是相同的。这很好。我想添加任何全局定义(如windows中的PATHEXT),翻译后会将.exe添加到所有builin cygwin命令中。这正好解决了我在windows 7上使用git bash时遇到的问题。运行type pip
表明它正在将pip作为winpty pip
的别名运行。显式调用pip可以避免这个winpty问题。
$ winpty mysqldump -u USER -p DB_NAME -r OUTPUT.sql
Enter password: ******
$ winpty mysql -u USER -p DB_NAME
Enter password: ******
mysql> source INPUT.sql
julien@SED-221-10 MINGW64 /c/xampp/htdocs
$ php -v > php
stdout is not a tty
julien@SED-221-10 MINGW64 /c/xampp/htdocs
$ php.exe -v > php
$ printf "\nalias mysql='mysql.exe'" >> ~/.bashrc