Hi Folks,
I am currently working on a c++11 asio based async connector for mariadb. The library takes advantage of mariadb’s async interface (mysql_*_start, mysql_*_cont functions). The whole point would be to prevent blocking in mysql operations and make operations cancellable via a reasonable interface.
Some example code:
TEST_CASE("tmp3") {
init_db();
asio::io_service io;
amdb::connector conn(io);
bool saved = false;
entity e(42, 3.14, "our entity");
amdb::auth_info auth("root");
conn.async_connect(amdb::null_endpoint, "edbtest", auth, amdb::default_flags, [&] (const std::error_code& ec) {
REQUIRE(!ec);
conn.async_write_entity(e, [&] (const std::error_code &ec) {
INFO(ec);
REQUIRE(!ec);
if (!ec) {
saved = true;
}
io.stop();
});
});
io.run();
REQUIRE(saved);
}
async_write_entity() is an extra feature of the lib, which is generating an sql “batch” of prepared statements to persist hierarchical objects and executes that batch.
Unfortunately I am receiving an error 2006 from my very first mysql_stmt_prepare call. This error roughly translates to "connection to mysql server is gone”. I cannot really spot the issue with my operation, could someone give me a hint about this error (typical causes, what to check, etc etc.)? I am a bit clueless here how to tackle this problem.
Since the batch generation/execution code is a bit convoluted and complex, i would not paste it here now, but if someone can point me in the right direction i can share relevant parts.
Thanks in advance
Andras
--
András Szabó
Sent with Airmail