Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL Git Bash winpty mysqldump stdout不是tty,stdin也不是tty_Mysql_Git Bash - Fatal编程技术网

MySQL Git Bash winpty mysqldump stdout不是tty,stdin也不是tty

MySQL 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

请使用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 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