2012-02-01 74 views
0

我想备份和回滚备份数据库,并且我想看看有什么错:为什么在尝试使用mysqldump命令时会出现此错误?

“mysqldump的”不被识别为一个内部或外部命令,可操作的程序或批处理文件。

以上是我在导出的文件中得到的内容。这是我运行的:

$database = 'logindb'; 

$backup = $location.'/'.$database.'_backup_'.date('Y').'_'.date('m').'_'.date('d').'.sql'; 

exec("mysqldump --opt -h localhost -u root logindb > $backup 2>&1", $output); 
print_r($output); 

由于$location是我的备份文件夹。那么,为什么我会得到这个错误?

而作为附加信息,我使用XAAMP测试本地主机,Apache服务器正在运行并且MySQL正在运行。

+0

找不到像'mysqldump'这样的声音:它没有安装(我不知道你是否可以单独安装它,或者这对于堆栈会非常奇怪),或者你的用户(apache? )没有权利吗? – Nanne 2012-02-01 12:23:42

+0

如果您试图在共享主机上执行此操作,也可以禁用“mysqldump”。 – Narek 2012-02-01 12:30:01

+0

我首先在本地主机上测试。 – Roland 2012-02-01 12:46:42

回答

2

因为mysqldump不在httpd用户路径中。

我假设你在Linux(或UNIX)中工作。

要知道女巫目录包含mysqldump,您可以执行whereis mysqldump

这时你有两种选择:

  • 检查mysqldump的目录中的httpd用户的PATH环境变量(usualy www-data用户为Apache服务器)。并将它包含在PATH中不存在。

  • 你也可以用完整路径执行mysqldump

像这样:

exec("/path_to_mysql_bins/mysqldump ... 
+0

我如何找到该路径? – Roland 2012-02-01 12:46:17

+0

我不得不添加'c:/ xampp/mysql/bin/mysqldump ...',在那里我找到了'mysqldump.exe'文件。但是当我在共享服务器上运行时会发生什么?我不需要那条路吗?还有,我将如何回滚数据库? – Roland 2012-02-01 12:56:07

+0

当参数化数据库连接时,可以参数化路径。 – danihp 2012-02-01 13:52:37

0

的错误不是一个mysqldump的错误,这是一个Windows错误,指出它不理解什么mysqldump涉及。要解决这个问题,可以将mysqldump可执行文件的路径包含到environment variables,或者使用mysqldump可执行文件的完整路径(可在XAMPP mysql文件夹中找到)运行exec命令。

相关问题