delphi - 通过 ShellExecute 的 Mysqldump 不起作用

标签 delphi mysql

我正在尝试使用 ShellExecute 运行 mysqldump 从 delphi 备份我的 mysql 数据库。 这就是我使用 mysqldump 的方式:

MySqlDump.exe -u root  -p[password]  [databasename] > TheOutputFile.Sql

这可以在命令提示符下运行。

我使用 ShellExecute 调用此命令行:

  ShellExecute(
    0,
    nil,
    'cmd.exe',
    'C:\SmartRetail\Test System\Periodic database backup\MySqlDump.exe -u root -p123    smartretailprogramdata > TheOutputFile2.Sql',
    nil,
    SW_SHOW
    );

这不起作用,而是打开命令提示符。 我做错了什么?

最佳答案

它会打开命令解释器,因为这就是cmd.exe。您需要指定 /C 来告诉 cmd 进程在解释完您的命令后关闭。

最重要的是,您需要管理工作目录。除非 .sql 文件位于工作目录中,否则转储进程将找不到它。并且工作目录是从父进程继承的,因为您没有指定它。您可能需要指定工作目录。

最后,ShellExecute 确实是错误的解决方案。您仅使用它来获取标准输出重定向。但这确实应该明确地完成。请改用CreateProcess

关于delphi - 通过 ShellExecute 的 Mysqldump 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439996/

相关文章:

delphi - Delphi XE中如何监控目录中的文件?

MySQL : Left outer join sql takes long time

php - 将 PHP session_id 存储在 MySQL 中以进行 AJAX 授权?

Delphi:框架之间的通信

delphi - 如何制作 firemonkey HUD 窗口

delphi - 更改形状的方向

delphi - GLScene 中的 GLFlatText 分辨率问题

MySQL - 通过时间戳进行查询是否更有效?

php - 解析错误 : syntax error, 意外 '13' 错误

php - 为 JSON 字符串编码 HTML