如果我从命令提示符运行它,它会起作用:
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/