【问题标题】:Why do I get this error when trying to use mysqldump command?为什么在尝试使用 mysqldump 命令时会出现此错误?
【发布时间】:2012-02-01 12:20:32
【问题描述】:

我想在数据库上备份和回滚备份,我正在尝试查看问题所在:

'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 在 localhost 上进行测试,Apache 服务器正在运行,MySQL 也在运行。

【问题讨论】:

  • 无法找到类似mysqldump 的声音:它要么没有安装(我不知道你是否可以单独安装它,或者这对于堆栈来说会很奇怪),或者也许您的用户(apache?)没有权限?
  • 如果您尝试在共享主机上执行此操作,mysqldump 也可以禁用。
  • 我先在 localhost 上测试。

标签: php mysql mysqldump


【解决方案1】:

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

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

要知道witch目录包含mysqldump,可以执行whereis mysqldump

那么你有两个选择:

  • 检查 mysqldump 目录是否在 httpd 用户的 PATH 环境变量中(通常是 www-data 用于 apache 服务器的用户)。并将其包含在 PATH 中是否不存在。

  • 还可以使用完整路径执行mysqldump

像这样:

exec("/path_to_mysql_bins/mysqldump ...

【讨论】:

  • 我如何找到那个路径?
  • 我必须添加 c:/xampp/mysql/bin/mysqldump ... ,在那里我找到了 mysqldump.exe 文件。但是当我在共享服务器上运行它时会发生什么?我不需要那条路,对吧?还有我将如何回滚数据库?
  • 您可以在参数化数据库连接时参数化路径。
  • 嗯,我愿意,但作为共享主机,我无法访问 mysql 服务器文件夹,只能访问我的根域文件夹。所以在共享主机上有一个路径是没有问题的,但是对于 localhost。
  • 可能在您的托管 mysqldump 位于 PATH 中。在其他地方,如果您可以运行,则意味着它位于可用路径中。询问您的管理员托管。
【解决方案2】:

该错误不是 mysqldump 错误,它是一个 Windows 错误,表示它不理解 mysqldump 与什么有关。要解决此问题,您可以将 mysqldump 可执行文件的路径包含到 environment variables 或使用 mysqldump 可执行文件的完整路径(您可以在 XAMPP mysql 文件夹中找到)运行 exec 命令。

【讨论】:

    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 2017-04-24
    • 2022-06-13
    • 1970-01-01
    • 2013-10-17
    • 2012-03-09
    • 2014-09-07
    • 2013-08-14
    相关资源
    最近更新 更多