mysql - 使用 windows api 函数 CreateProcessA 初始化 mysql

标签 mysql visual-c++ mariadb c++builder

我尝试使用以下命令在 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/

相关文章:

mysql - 设置laravel Eloquent关系报错

mysql - 以不自然的顺序排列结果集

visual-c++ - 在点上运行 cv::warpPerspective

php - Docker 无法使用 PHP 连接到 mariadb

php - 无法将希伯来语发布到 mysql

c++11 - 获取指向派生类的弱指针

windows - free 和 malloc 的 Visual C++ 线程安全?

Mysql:从二进制 ip 和子网获取 IPv6 二进制网络掩码

javascript - 提交表单时,如何检查用户的电子邮件是否已在我的数据库中?

mysql - Doctrine 创建外键