Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 无法在Windows命令提示符中使用while命令_Mysql_Batch File_Cmd - Fatal编程技术网

Mysql 无法在Windows命令提示符中使用while命令

Mysql 无法在Windows命令提示符中使用while命令,mysql,batch-file,cmd,Mysql,Batch File,Cmd,我试图完成的是将我拥有的每个数据库转储到单独的.sql文件中。每当我运行我的代码时,我都会收到一个与“while”和“do”命令相关的错误,这取决于我将哪个命令放在第一位。从那时起,我就有了“while”是第一个,而“do”是第一个的例子。我尝试了这两种方法,但都导致“无法识别为内部或外部命令” 我在命令行中使用了以下命令 "C:\Program Files\MySQL\MySQL Server 5.7\bin\"mysql -u[user] -p[password] -e "show data

我试图完成的是将我拥有的每个数据库转储到单独的.sql文件中。每当我运行我的代码时,我都会收到一个与“while”和“do”命令相关的错误,这取决于我将哪个命令放在第一位。从那时起,我就有了“while”是第一个,而“do”是第一个的例子。我尝试了这两种方法,但都导致“无法识别为内部或外部命令”

我在命令行中使用了以下命令

"C:\Program Files\MySQL\MySQL Server 5.7\bin\"mysql -u[user] -p[password] -e "show databases" | while read dbname do "C:\Program Files\MySQL\MySQL Server 5.7\bin\"mysqldump -u[user] -p[password] --complete-insert "$dbname" > "D:\Backup\$dbname"_6am_mon.sql; done
但是,我一直收到以下错误:“while”不能识别为内部或外部命令、可操作程序或批处理文件

为什么我在使用while和do命令时出错?如何解决此错误


谢谢

管道
|
和输出重定向
首先由cmd.exe解释,而不是作为脚本的一部分查看。试着用插入符号^和^>

不太了解Mysql脚本处理重定向文件名的引号可能是$dbname未解析的原因

一种解决方法是将脚本放在一个文件中,并从批处理中调用它

@Echo off
Pushd "C:\Program Files\MySQL\MySQL Server 5.7\bin\"
mysql -u[user] -p[password] -e "Source X:\Path\Script.sql"
Popd

管道
|
和输出重定向
首先由cmd.exe解释,而不是作为脚本的一部分查看。试着用插入符号^和^>

不太了解Mysql脚本处理重定向文件名的引号可能是$dbname未解析的原因

一种解决方法是将脚本放在一个文件中,并从批处理中调用它

@Echo off
Pushd "C:\Program Files\MySQL\MySQL Server 5.7\bin\"
mysql -u[user] -p[password] -e "Source X:\Path\Script.sql"
Popd

管道
|
和输出重定向
首先由cmd.exe解释,而不是作为脚本的端口查看。尝试用插入符号
^
^>
将它们转义。您似乎还有一些奇怪的双引号。@LotPings解决了我遇到的错误。如果你创造一个答案,我会把它标记为正确的。由于解决了这个问题,我确实有一个附带问题。我是否正确使用了变量?我的文件显示为$dbname_6am_mon.sql,而不是实际数据库的名称。@Compo由于文件路径中的间距,需要使用引号。如果我删除双引号,那么空格就会出错。我不是说不需要双引号,而是说它们的位置很奇怪<代码>“C:\Program Files\MySQL\MySQL Server 5.7\bin\MySQL”,
“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump”
“D:\Backup\$dbname\u 6am\u mon.sql”
更有意义。管道
和输出重定向
首先由cmd.exe解释,而不是作为脚本的端口。尝试用插入符号
^
^>
将它们转义。您似乎还有一些奇怪的双引号。@LotPings解决了我遇到的错误。如果你创造一个答案,我会把它标记为正确的。由于解决了这个问题,我确实有一个附带问题。我是否正确使用了变量?我的文件显示为$dbname_6am_mon.sql,而不是实际数据库的名称。@Compo由于文件路径中的间距,需要使用引号。如果我删除双引号,那么空格就会出错。我不是说不需要双引号,而是说它们的位置很奇怪<代码>“C:\Program Files\MySQL\MySQL Server 5.7\bin\MySQL”,
“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump”
“D:\Backup\$dbname\u 6am\u mon.sql”
更有意义。