Windows 7 MySQL error: 'C:\Program' is not recognized as an internal or external command, operable program or batch file
Windows 7 MySQL error: 'C:\Program' is not recognized as an internal or external command, operable program or batch file
我在 运行 MySQL 里面 windows7。
在机器 1 中 MySql 是由 XAMPP packge 安装的。
在机器 2 中,我使用从 MySQL 站点安装的 windows 的默认配置安装了 MySQL。这意味着,它安装在 Program Files (x86)\MySQL.
此代码适用于机器 1:
$command ="C:\xampp\mysql\bin\mysqldump -u root --add-drop-database --databases DB_TESTE>C:\xampp\htdocs\test\DB_TESTE.sql";
echo shell_exec($command);
此代码不适用于机器 2:
$command ="C:\Program Files (x86)\MySQL\mysqldump -u root -pPASSWORD --add-drop-database --databases DB_TESTE > C:\Users\myname\Desktop\dumpbymysql\DB_TESTE.sql";
echo shell_exec($command);
对于机器 2,我在屏幕上有这个错误:
'C:\Program' is not recognized as an internal or external command, operable program or batch file.
我认为它与 Program 和 Files 文件夹名称之间的 space 有关。我尝试了很多不同的方法来使用双引号或单引号但没有成功。我找到了这个 post 但没有解决我的问题 'C:\Users\' is not recognized as an internal or external command,operable program or batch file。
知道如何解决这个问题吗?也许设置环境变量可以解决问题?
也尝试引用路径,如下所示:
$command =""C:\Program Files (x86)\MySQL\mysqldump" ... "
我认为您只需要修复命令中的转义即可。尝试:
$command ="C:\Program\ Files\ \(x86\)\MySQL\mysqldump -u root -pPASSWORD --add-drop-database --databases DB_TESTE > C:\Users\myname\Desktop\dumpbymysql\DB_TESTE.sql";
你在第一个命令中有所有这些双斜杠的原因是它们需要被转义才能被视为路径中的普通字符,否则它只会被视为转义下一个字符(这是如果它不是特殊字符,则不是您想要的)。双引号允许这种转义发生,当命令被解释时,“\”变成“\”,“\”将变成“”。
当您尝试更改为单引号时,所发生的只是转义字符被视为文字字符,但 space 仍被视为分隔符以标记命令结束,这不是你想要的。
好的,我刚刚找到了解决方案。所以为了逃避 space,我确实使用了 ^
:
$command ="C:\Program^ Files^ ^(x86)\MySQL\mysqldump -u root -pPASSWORD --add-drop-database --databases DB_TESTE > C:\Users\myname\Desktop\dumpbymysql\DB_TESTE.sql";
echo shell_exec($command);
我在 运行 MySQL 里面 windows7。 在机器 1 中 MySql 是由 XAMPP packge 安装的。 在机器 2 中,我使用从 MySQL 站点安装的 windows 的默认配置安装了 MySQL。这意味着,它安装在 Program Files (x86)\MySQL.
此代码适用于机器 1:
$command ="C:\xampp\mysql\bin\mysqldump -u root --add-drop-database --databases DB_TESTE>C:\xampp\htdocs\test\DB_TESTE.sql";
echo shell_exec($command);
此代码不适用于机器 2:
$command ="C:\Program Files (x86)\MySQL\mysqldump -u root -pPASSWORD --add-drop-database --databases DB_TESTE > C:\Users\myname\Desktop\dumpbymysql\DB_TESTE.sql";
echo shell_exec($command);
对于机器 2,我在屏幕上有这个错误:
'C:\Program' is not recognized as an internal or external command, operable program or batch file.
我认为它与 Program 和 Files 文件夹名称之间的 space 有关。我尝试了很多不同的方法来使用双引号或单引号但没有成功。我找到了这个 post 但没有解决我的问题 'C:\Users\' is not recognized as an internal or external command,operable program or batch file。
知道如何解决这个问题吗?也许设置环境变量可以解决问题?
也尝试引用路径,如下所示:
$command =""C:\Program Files (x86)\MySQL\mysqldump" ... "
我认为您只需要修复命令中的转义即可。尝试:
$command ="C:\Program\ Files\ \(x86\)\MySQL\mysqldump -u root -pPASSWORD --add-drop-database --databases DB_TESTE > C:\Users\myname\Desktop\dumpbymysql\DB_TESTE.sql";
你在第一个命令中有所有这些双斜杠的原因是它们需要被转义才能被视为路径中的普通字符,否则它只会被视为转义下一个字符(这是如果它不是特殊字符,则不是您想要的)。双引号允许这种转义发生,当命令被解释时,“\”变成“\”,“\”将变成“”。
当您尝试更改为单引号时,所发生的只是转义字符被视为文字字符,但 space 仍被视为分隔符以标记命令结束,这不是你想要的。
好的,我刚刚找到了解决方案。所以为了逃避 space,我确实使用了 ^
:
$command ="C:\Program^ Files^ ^(x86)\MySQL\mysqldump -u root -pPASSWORD --add-drop-database --databases DB_TESTE > C:\Users\myname\Desktop\dumpbymysql\DB_TESTE.sql";
echo shell_exec($command);