mysql - 带参数的 ExecWait 和 MySQL 不起作用

标签 mysql nsis

如果我从命令提示符运行它,它会起作用:

C:\Program Files\MariaDB 5.5\bin>MySQL.exe -u root -p --password=xyz --port=3322 --protocol=TCP < "C:\temp folder\CREATE_database.sql"

所以我知道 .sql 脚本没问题。

但在我的 NSIS 脚本中,我看到弹出一个命令提示符窗口,但很快消失,并且未创建数据库:

  ExecWait '"C:\Program Files\MariaDB 5.5\bin\mysql.exe" -u root -p --password=root --port=3322 --protocol=TCP < "C:\temp folder\CREATE_database.sql"'

我是否没有正确地将参数传递给MySQL.exe?

最佳答案

ExecWait 只是创建一个简单的进程,它不支持 stdin/stdout 重定向。

您可以使用 cmd.exe 作为帮助程序:

Section 
nsExec::ExectoStack 'cmd.exe /c if 1==1 "c:\path\to\myapp.exe" -param1 -param2 < "stdin file.txt"'
pop $0
pop $1
DetailPrint "Exit code=$0"
DetailPrint "Output=|$1|"
SectionEnd

或者您可以使用 ExecDos plug-in .

关于mysql - 带参数的 ExecWait 和 MySQL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48737906/

相关文章:

mysql - 多线程应用程序和mysql

php - 棘手的 Eloquent 查询

nsis:如何创建开始菜单快捷方式来打开文件夹?

windows - NSIS $TEMP 有不同的值(value)

installation - InstFiles 上的 NSIS 控制进度条

mysql - 我怎样才能重写这个查询以使其更具可读性?

jquery - 如何使用 jquery-ui-1.8.21.autocomplete 和来自 mysql 的数据填写表单

mysql - 如何修改一个 'select'列中的两个变量?

nsis - 从 NSIS 安装程序调用 ngen

mysql - 检查MySQL服务器是否安装