我尝试使用以下命令在Windows 10 64Bit下初始化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 First而不是MariaDb。两者都写相同的错误消息。
答案 0 :(得分:0)
您使用--bootstrap参数。你应该把SQL脚本编写到stdin然后,你没有。你最终想要实现什么目标?
答案 1 :(得分:0)
我遇到了同样的问题:在Borland中,使用开关创建过程的方式与在命令行中不同。
我通过直接启动命令行脚本而不是MySQL来找到解决方法,并且在脚本中包含了所有开关...这是对我有用的解决方法:
void Twin_main::server_on()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
SECURITY_ATTRIBUTES attr0,attr1;
ZeroMemory(&si,sizeof(si));
ZeroMemory(&pi,sizeof(pi));
si.cb=sizeof(si);
attr0.nLength=sizeof(SECURITY_ATTRIBUTES);
attr0.bInheritHandle=TRUE;
attr0.lpSecurityDescriptor=NULL;
attr1=attr0;
if (CreateProcess(NULL,"MySQL_start.cmd",&attr0,&attr1,TRUE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi))
{
}
}
MySQL_start.cmd
在哪里:
cd ..\\MySQL Server 5.7.19
bin\mysqld --defaults-file="my.ini" --console
与我的App exe和MySQL放在同一目录中时,位于上面的一个文件夹中:
[MySQL Server 5.7.19]
[bin]
mysqld.exe
[MyApp]
MyApp.exe
MySQL_start.cmd
因此尝试模仿它,然后重写MySQL_start.cmd
以匹配您的需要...