将db备份为xml时遇到mysqldump问题

时间:2013-03-05 23:35:51

标签: php mysql xml shell mysqldump

我正在尝试使用mysqldump备份我的一个数据库,并且我正在尝试将其导出到已存在的xml文件中。这就是我所拥有的:

<?php
$dbUser = 'user';    // db User
$dbPass = 'pass';    // db User Password
$dbName = 'db';      // db name
$dest   = $_SERVER['DOCUMENT_ROOT'] . 'backup'; // Path to directory

class MySQLDump {
private $cmd;

function MySQLDump($dbUser,$dbPass,$dbName,$dest) {
    $fname = $dbName.'.xml';
    $this->cmd='mysqldump -X -u'.$dbUser.' -p'.$dbPass.' '.$dbName.
        ' >'.$dest.'/'.$fname;
}

public function backup() {
    system($this->cmd, $error);
    if($error) {
        trigger_error ('Backup failed: ' . $error . '<br />Attempted: ' . $this->cmd);
    }
}
} // end class def

$mysqlDump = new MySQLDump($dbUser, $dbPass, $dbName, $dest);  
$mysqlDump->backup();
?>

这总是会生成backup函数中抛出的错误。以下是$cmd输出的示例:

mysqldump -X -udan -pdanPass danDB >/var/www/prod/dan/web/backup/danDB.xml

知道出了什么问题吗?我从来没有真正使用mysqldump所以我不确定我是否正确接近这个。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

尝试在-u$dbUser之间添加空格。

答案 1 :(得分:0)

根据Does mysqldump return a status?,出现了问题,是的。由于您没有共享返回代码,我们无法说出是警告还是错误。

除此之外,您可以通过查看mysqldump命令返回的STDERR output轻松了解到底出了什么问题。例如。你可以把它传递给database.err

mysqldump -X -udan -pdanPass danDB >/path/to/backup/danDB.xml 2>database.err
                                                              ^^^^^^^^^^^^^^

答案 2 :(得分:-1)

这个对我有用

mysqldump --user=xxx --password=xxx  databasename  --xml > file.xml