通过php exec的mysqldump转储适用于第一个数据库,但不适用于下一个3

时间:2016-07-10 11:51:13

标签: php exec mysqldump

我有四个数据库,我试图在php中使用exec备份(mysqldump ...) 我使用以下代码,

$command = 'mysqldump  --single-transaction --comments --dump-date --host='.$host[$db].' --user='.$dbuser[$db].' --password='.$dbpass[$db].' '.$dbname[$db].' | zip > '.$filepath;
exec($command, $_messages, $result);
if($result)
{
echo '<p class="success">Backup for database '.$dbname[$db].' complete. Located at: '.$filepath.'';
}
else 
{

echo'备份数据库'。$ dbname [$ db]。'失败

';    }

$ host,$ dbname等是我用来连接数据库进行正常访问的相同变量,所以我知道它们是有效的。我的印象是exec()函数的第三个参数如果成功则为 True ,否则为 False 。转储通过使用$ db变量循环,因此发出的命令格式相同,但显然每个数据库的详细信息不同。结果如下,

  • 数据库转储工作正常,但$ result以 False
  • 的形式返回
  • 数据库B转储生成一个文件,但没有内容和$ result返回 False
  • 数据库c转储生成一个文件,但没有内容和$ result返回 False
  • 数据库D转储显然有效($ result True )但不生成任何文件。

所以我开始认为$ result的正确解释是成功的。

如果数据库在循环中处理或单独处理,则没有区别。通过phpMyAdmin生成转储没有问题,数据库转储与phpMyAdmin转储相关。

我正在使用cPanel运行php 5.4和MySQL 5.6.30的共享托管平台。

有人对可能发生的事情有任何想法吗?

非常感谢。

0 个答案:

没有答案