2

我试图转储数据库:

<?php
$dbhost = "localhost";
$dbuser = "XXXX";
$dbpass = "XXXXXXXX";
$dbname = 'testdb';

$list = shell_exec ("C:\wamp\bin\mysql\mysql5.1.33\bin\mysqldump.exe $dbname  --user=$dbuser--password=$dbpass > dumpfile.sql");
?>

我尝试了mysqldump.exe的指定完整路径或只使用mysqldump,它仍然给我一个0kb的dumpfile.sql

详细信息:编程语言:PHP 数据库:MySql 5.XX 操作系统(服务器):Windows Server 2003。(目前在 Windows Vista 机器上测试)

编辑@杰里米赫斯洛普:

我试过了:

shell_exec("C:\wamp\bin\mysql\mysql5.1.33\bin\mysqldump.exe --opt -h $dbhost -u$dbuser -p$dbpass $dbname > test.sql");

安全模式 = 关闭

仍然没有运气的人。

4

4 回答 4

2

叫我疯了,但你不需要在你的路径名中转义那些反斜杠吗?我猜该命令失败了,并且由于错误出现在 stderr 上,因此没有写入任何内容。

于 2010-01-14T03:33:29.133 回答
1

它应该是“c:\wamp\bin\mysql\mysql5.1.36\bin>mysqldump -u root -p zencartdb > zencartdb.sql”

它要求输入密码,提供您是否已向 root 提供密码或直接按 Enter 键。这将成功备份。我也在 Windows Vista 上对其进行了测试。

于 2010-12-22T11:43:15.483 回答
0

我试过这样 $result = system ("C:\wamp\mysql\bin\mysql.exe -u $username -p $password $dbname < $pathtomysqlfile"); 并成功执行,然后恢复备份。我正在使用 wamp。请尝试一下..........

于 2010-05-29T05:02:42.933 回答
0

如果我没记错的话,dbname 应该在 --user 和 --password 之后的调用末尾,如下所示:

$list = shell_exec ("C:\wamp\bin\mysql\mysql5.1.33\bin\mysqldump.exe --user=$dbhost --password=$dbpass $dbname > dumpfile.sql");

否则,如果这不起作用,则需要注意其他一些事情。确保运行 php 的用户有权写入该目录。还要确保 php.ini 具有 safe_mode = off 因为这可能会导致问题。祝你好运!

于 2010-01-14T03:27:02.420 回答