2013-03-10 74 views
1

我正在使用生成零长度文件的myqldump。我尝试了很多次,但似乎只输出一个零长度的文件。我不知道为什么。我需要安装什么或什么?mysqldump生成零长度文件

<? 
    shell_exec("mysqldump -hlocalhost -uroot -p -A> db/ilamdb.sql "); 
    echo "complete"; 
    ?> 
+0

什么是变量'$ _db_database'?你的变量是'$ _db',还是'$ _db_database'? – 2013-03-10 02:44:34

+0

您应该将输出捕获为'$ out = shell_exec()'并检查它。 – 2013-03-10 02:45:16

+0

它只是一个变量,我打电话给我的数据库 – user2004096 2013-03-10 02:46:14

回答

1
  1. 提供一个完整路径mysqldump的
  2. 提供(在你的情况根),用于用户的密码。 离开-p表示以交互方式询问用户密码。如果包含以下字符之一,请将其转义或放在引号中* ? [ < > & ; ! | $
  3. 对于使用--no-defaults选项的好措施。你可能不需要这个。
  4. 最后,将stderr重定向到stdout,并在命令末尾添加2>&1。这样,如果发生错误,您将在文件中获取用于调试目的的错误消息,而不仅仅是空文件。

因此你的代码来调用mysqldump可能看起来像这样

$pwd = '*******'; 
$cmd = "/usr/local/mysql/bin/mysqldump -hlocalhost -uroot -p'$pwd' -A> db/ilamdb.sql 2>&1"; 
shell_exec($cmd); 
+0

@ user2004096有帮助吗? – peterm 2013-03-11 03:10:38