我尝试使用以下命令在 Windows 10 64 位下初始化 mysql:
"D:\Test\Win32\Debug\mysqld.exe" --no-defaults --console --innodb-page-size=16384 --bootstrap "--lc-messages-dir=D:/Tests/Win32/Debug/share" --basedir=. --datadir=. --default-storage-engine=myisam --max_allowed_packet=9M --net-buffer-length=16k
当前目录是D:\Tests\Win32\Debug\data。
如果我从 shell 运行命令,没有问题。 我使用 embarcadero 编写了一个 c++ 程序,另一个使用 MVS 2013 编写了代码:
SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES)};
sa.bInheritHandle = TRUE;
assert(CreatePipe(&m_ro, &m_wo, &sa, 0));
assert(SetHandleInformation(m_ro, HANDLE_FLAG_INHERIT, 0));
assert(SetHandleInformation(m_wo, HANDLE_FLAG_INHERIT, 0));
assert(CreatePipe(&m_ri, &m_wi, &sa, 0));
assert(SetHandleInformation(m_ri, HANDLE_FLAG_INHERIT, 0));
assert(SetHandleInformation(m_wi, HANDLE_FLAG_INHERIT, 0));
STARTUPINFOA si = {sizeof(STARTUPINFOA)};
si.dwFlags |= STARTF_USESTDHANDLES;
si.hStdInput = m_ri;
si.hStdOutput = m_wo;
si.wShowWindow = SW_SHOWMAXIMIZED | SW_SHOWNORMAL;
assert(CreateProcessA(ApplicationName, CommandLine, NULL, NULL, true, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &si, &m_pi));
Mysqld.exe 在打印错误消息后退出: [错误] 1105 Bootstrap 文件错误,返回代码 (32)。最近的查询:''
我首先使用 Mysql 而不是 MariaDb。两者都写入相同的错误消息。
最佳答案
您使用 --bootstrap 参数。你应该将 SQL 脚本写入 stdin,但你没有。您最终想要实现什么目标?
关于mysql - 使用 windows api 函数 CreateProcessA 初始化 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49716840/