initiale mysql window api 함수 CreateProcessA 를 사용합니다.
window 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:테스트\Win32\Debug\data.
셸에서 명령을 실행하면 문제가 없습니다.엠바카데로를 이용한 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 종료 : [Error] 1105 부트스트랩 파일 오류, 반환 코드 (32)가장 가까운 쿼리: '
나는 Mysql First를 사용해왔고 MariaDb를 사용해왔습니다.둘 다 같은 오류 메시지를 씁니다.
--bootstrap 매개 변수를 사용합니다.그러면 stdin에 SQL 스크립트를 작성해야 하는데, 작성하지 않습니다.궁극적으로 무엇을 이루고자 합니까?
스위치로 프로세스를 만드는 것이 Borland에서 command line과 같은 방식으로 작동하지 않는 것과 같은 문제가 생겼습니다.
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
내 Appexe 및 MySQL과 동일한 dir에 배치되는 동안 위의 폴더는 다음과 같습니다.
[MySQL Server 5.7.19]
[bin]
mysqld.exe
[MyApp]
MyApp.exe
MySQL_start.cmd
그러니 그걸 흉내내고 다시 써봐요MySQL_start.cmd
당신이 필요로 하는 것에 걸맞게...
언급URL : https://stackoverflow.com/questions/49716840/initiale-mysql-using-windows-api-function-createprocessa
'programing' 카테고리의 다른 글
jQuery 텍스트 전환? (0) | 2023.10.18 |
---|---|
일치하지 않는 변형 숨기기 (0) | 2023.10.18 |
어떻게 하면 이 스크립트를 수정하여 레코드를 표시하지 않고 삭제할 수 있습니까? (0) | 2023.10.18 |
MySQL 및 Python으로 데이터베이스가 자동으로 업데이트되지 않음 (0) | 2023.10.18 |
0으로 구분: C 및/또는 C++에 정의되지 않은 행동 또는 구현? (0) | 2023.10.18 |