Saludos, ¿cómo puedo configurar la opción de autoReconexión con el conector mysql C++? (no con mysql c api http://dev.mysql.com/doc/refman/5.0/en/mysql-options.html)Cómo establecer la opción de autoreconexión con el conector mysql C++
Respuesta
No soy un usuario de esta biblioteca, por lo que mi conocimiento de ella solo vale los últimos 10 minutos, así que por favor verifique.
Como regla general, el mejor recurso de dicha información sobre el uso de varios detalles específicos de una biblioteca es echar un vistazo a sus pruebas unitarias. Lo mejor de OSS.
Si mira las pruebas de unidades MySQL Connector/C++ que se pueden encontrar en su árbol de fuentes, verá el extracto a continuación.
sql::ConnectOptionsMap connection_properties;
...
connection_properties["OPT_RECONNECT"]=true;
try
{
con.reset(driver->connect(connection_properties));
}
catch (sql::SQLException &e)
{
std::cerr << e.what();
}
Para obtener más información, haga lo siguiente, para que pueda echar un vistazo a sí mismos.
~/tmp$ bzr branch lp:~mysql/mysql-connector-cpp/trunk mysql-connector-cpp
~/tmp$ vi mysql-connector-cpp/test/unit/classes/connection.cpp +170
~/tmp$ vi mysql-connector-cpp/test/unit/classes/connection.h
Habiendo dicho todo esto, vuelva a conectar la opción de MySQL tiene que ser utilizada con mucho cuidado, ya que tendrá que restablecer las variables de sesión, etc Usted tendrá que tratar a una conexión a conectar como una nueva conexión de marca. Esto debe verificarse con la documentación de la versión particular de MySQL con la que está trabajando.
Gracias @CodeMedic, mi versión de la biblioteca no tiene el método con.reset, lo intentaré con la última versión. Y también probé con> setClientOption ("OPT_RECONNECT", "true") sin suerte :( – xdebug
Debe pasar el valor booleano por referencia. Mi código sí lo hace:
bool myTrue = true;
con->setClientOption("OPT_RECONNECT", &myTrue);
Y eso funcionó para mí.
Una más completa ejemplo
cabecera
#include <boost/thread.hpp>
#include <boost/shared_ptr.hpp>
#include <mysql_connection.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
std::string host_name = "localhost";
std::string user_name = "user1234";
std::string password = "pw1234";
std::string database_name = "TestingDB";
bool reconnect_state = true;
sql::ConnectOptionsMap connection_properties;
sql::Driver *driver;
boost::shared_ptr <sql::Connection> con;
boost::shared_ptr <sql::Statement> stmt;
boost::shared_ptr <sql::ResultSet> res;
boost::shared_ptr <sql::PreparedStatement> pstmt;
conectar
driver = get_driver_instance(); // protected
con.reset(driver->connect (host_name, user_name, password)); // connect to mysql
con->setClientOption("OPT_RECONNECT", &reconnect_state);
con->setSchema(database_name);
hilo
std::vector <std::string> database::string_from_sql (std::string query, std::string column_name)
{
std::cout << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | started" << std::endl;
std::vector <std::string> svec;
try
{
driver->threadInit(); // prevents multiple open connections
if (con.get() == NULL)
{
std::cerr << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | connection is not open" << std::endl;
throw -2;
}
stmt.reset (con->createStatement());
res.reset (stmt->executeQuery (query));
while (res->next())
{
svec.push_back(res->getString (column_name));
}
driver->threadEnd();
}
catch (sql::SQLException &e)
{
std::cerr << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | e.what(): " << e.what() << " (MySQL error code: " << e.getErrorCode() << ", SQLState: " << e.getSQLState() << ")" << std::endl;
throw -1;
}
if (svec.empty())
{
std::cerr << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | return vector size is 0 (Empty set)" << std::endl;
throw -3;
}
std::cout << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | ended" << std::endl;
return svec;
}
- 1. Cómo conectarse a mysql usando el conector mysql mediante C# sin instalar realmente el conector
- 2. Conector Mysql asincrónico
- 3. Como instalar conector de MySQL
- 4. ¿Cómo obtener schemaspy para ver el conector mysql?
- 5. la detección de conector en C#
- 6. Comparación del conector IPV4 (sockaddr_in) con el conector IPV6 (sockaddr_in6)
- 7. Conector Mysql/C++ para Windows 2010 Express no compilando
- 8. Cómo establecer un tiempo de espera para la consulta de MySQL con C API
- 9. jQuery establecer el botón de opción
- 10. C# Mono Conector MySql: no se puede conectar a ningún host MySQL especificado
- 11. Establecer la opción urgente en phpmailer
- 12. cómo conectar java y mysql utilizando el conector mysql java 5.1.12
- 13. jQuery Establecer la opción seleccionada utilizando Siguiente
- 14. Cómo controlar la opción de carpeta con C# o registro
- 15. Opciones de Django. ¿Cómo establecer la opción predeterminada?
- 16. Escapar valores en consultas SQL (C# con conector SQL)
- 17. Conector NIO en Tomcat
- 18. Cómo establecer la opción para ignore_ssl_errors Carpincho Webkit en spec_helper.rb
- 19. columnas MySQL con nulo predeterminado - opción estilística, ¿o no?
- 20. Establecer el valor de la etiqueta con C# Cross Threading
- 21. Establecer el valor (opción seleccionada) de un widget dijit.form.Select
- 22. Establecer la opción seleccionada en la etiqueta de selección existente con jstl
- 23. ¿Cómo establecer la opción "eliminar cascada" en "Establecer nulo" en Fluidez NHibernate?
- 24. Establecer el tiempo de la máquina C#
- 25. Algoritmo de conector de diagrama
- 26. Cómo establecer un botón de opción en Android
- 27. ¿Cómo puedo establecer un valor para la opción predeterminada con Html.DropDownList
- 28. Wicket Opción desplegable para establecer el valor predeterminado
- 29. cómo utilizar la opción con pep8.py
- 30. OpenJPA en OSGi no encuentra el paquete conector de MySQL JDBC
En la API C es una práctica común que si una consulta falla, haga ping en la base de datos y vuelva a intentar la consulta. – chrisaycock
puedo volver a conectarme si la consulta falla (el servidor Mysql se ha ido, la conexión se ha perdido durante la consulta, etc.) pero quiero configurar autoReconnect como se menciona en http://dev.mysql.com/doc/refman/5.0/en/connector-j -reference-configuration-properties.html – xdebug