C++ / Linux / Connector
-
Ich arbeite unter Mac und Linux Mint.
Ein Programm, dass ich unter Mac entwickelt habe, läuft dort unter Verwendung von Xampp´s MariaDB und dem mysqlcppconnector (1.1.9) einwandfrei.
Unter Linux bekomme ich my dem connector (1.1.7) den Error, dass "max_prepared_stmt_count" (16382) überschritten würde. Als Quickfix habe ich den Wert einfach mal hochgesetzt.
Leider ist es nun so, dass das Programm wesentlich langsamer unter Linux läuft.Nutze ich irgendwelche falschen Bibliotheken? (Installiert ist libmysqlcppconn-dev, 1.1.7-0ubuntu1).
Maria DB unter Linux ist 10.1.38-MariaDB Source distribution, betrieben über lampp.
-
@ravenheart_ggg sagte in C++ / Linux / Connector:
libmysqlcppconn
Das sieht dann ja so aus, als würdest du die prepared statements nicht wieder freigeben. Du verwendest sie wie dokumentiert?
https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-examples-prepared-statements.html
// ... sql::Connection *con; sql::PreparedStatement *prep_stmt // ... prep_stmt = con->prepareStatement("INSERT INTO test(id, label) VALUES (?, ?)"); prep_stmt->setInt(1, 1); prep_stmt->setString(2, "a"); prep_stmt->execute(); prep_stmt->setInt(1, 2); prep_stmt->setString(2, "b"); prep_stmt->execute(); delete prep_stmt; delete con;
Note
You must free the sql::PreparedStatement and sql::Connection objects explicitly using delete.
-
Ich verwende unique pointer in meinem Code.
std::unique_ptr< sql::PreparedStatement > stmt(session->prepareStatement("QUERY"));
Ist da ein Fehler drin?
-
Ist da ein Fehler drin?
Wenn der unique_ptr nach Gebrauch zerstört wird, ist das Ok.
Dann liegt das Problem woanders, da kenne ich mich dann aber nicht aus.