【问题标题】:Mysqldump create empty sql file? [php & mysql on Windows]Mysqldump 创建空的 sql 文件? [Windows 上的 php 和 mysql]
【发布时间】:2010-01-14 03:12:37
【问题描述】:

我试图转储一个数据库:

<?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");

安全模式 = 关闭

还是没有运气。

【问题讨论】:

标签: php mysql mysqldump


【解决方案1】:

说我疯了,但你不需要转义路径名中的那些反斜杠吗?我猜这个命令失败了,因为错误在 stderr 上,所以什么都没有写。

【讨论】:

  • 我和你一起疯了(去掉了反斜杠),没什么好说的了,哈哈
  • 那太疯狂了,因为我建议你把它们加倍:) shell_exec("C:\\wamp\\bin\\mysql\\mysql5.1.33\\bin\\mysqldump.exe --选择 -h $dbhost -u$dbuser -p$dbpass $dbname > test.sql");
【解决方案2】:

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

它要求输入密码,提供您是否给 root 密码或直接回车。这将成功备份。我也在 Windows Vista 上测试过。

【讨论】:

    【解决方案3】:

    如果我没记错的话,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 因为这可能会导致问题。祝你好运!

    【讨论】:

    • 编辑了我的答案。在批处理文件中创建 mysqldump 是否更容易?
    • 如果您需要从 php 传递用户/传递信息,则不需要,但如果您不需要,那么批处理文件可能更直接。当您从命令行手动运行 mysqldump 命令时,它是否按预期工作?詹姆斯上面的回答可能会导致一些事情。如果 mysqldump 返回任何错误,我也会尝试打印 $list 的输出(shell_exec 的输出)以检查。尝试为 mysqldump 打开详细。
    【解决方案4】:

    我试过这样 $result = system ("C:\wamp\mysql\bin\mysql.exe -u $username -p $password $dbname

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多