Selamlar, mysql bağlayıcısı C++ ile otomatik yeniden bağlanma seçeneğini nasıl ayarlayabilirim? (mysql c api ile değil http://dev.mysql.com/doc/refman/5.0/en/mysql-options.html)mysql bağlayıcısı ile autoreconnect seçeneği nasıl ayarlanır C++
cevap
Bu kütüphanenin bir kullanıcısı değilim, bu yüzden bu konudaki bilgim sadece son 10 dakikadır, yani lütfen doğrulayın.
Genel bir kural olarak, bir kütüphanenin çeşitli ayrıntılarının kullanımıyla ilgili bu tür bilgilerin en iyi kaynağı ünite testlerine bakmaktır. OSS hakkında en iyi şey.
Kaynak ağacında bulunan MySQL Connector/C++ birim testlerine bakarsanız, aşağıdaki özü göreceksiniz.
sql::ConnectOptionsMap connection_properties;
...
connection_properties["OPT_RECONNECT"]=true;
try
{
con.reset(driver->connect(connection_properties));
}
catch (sql::SQLException &e)
{
std::cerr << e.what();
}
Daha fazla bilgi için, lütfen aşağıdan bakın, böylece kendinize bir göz atabilirsiniz.
~/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
, vb yepyeni bağlantısı olarak bir yeniden bağlantı tedavisi için mysql seçenek, herhangi bir oturum değişkenleri sıfırlamak zorunda olacak gibi çok dikkatli kullanılmalıdır olacak yeniden bağlamak tüm bu having. Bu, üzerinde çalıştığınız MySQL'in belirli sürümünün belgelendirilmesiyle doğrulanmalıdır.
Teşekkür ederim @CodeMedic, benim kütüphanem sürümü con.reset yöntemi yok, ben en son sürümü ile deneyeceğim. Ve ayrıca hiçbir şans olmadan con-> setClientOption ("OPT_RECONNECT", "true") denedim :( – xdebug
Boolean değerini başvuruyla iletmeniz gerekir. Benim kodum:
bool myTrue = true;
con->setClientOption("OPT_RECONNECT", &myTrue);
Ve bu benim için çalıştı.
daha tam bir örnek
başlık
#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;
bağlamak
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);
iplik
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. MySQL Bağlayıcısı C++ sorguyu yürütürken çöküyor
- 2. "mysql_options" öğesini ayarlamak için C++ bağlayıcısı için örnek kod gerekiyor
- 3. komut satırına bir CKağıt seçeneği() nasıl ayarlanır
- 4. ActiveMQ ve CachingConnectionFactory ile Autoreconnect sorunu
- 5. Pymongo AutoReconnect istisnası insert_many yöntemi ile nasıl kullanılır
- 6. mysql ile bağlanarak C++
- 7. C# veya kayıt defteri ile klasör seçeneği nasıl kontrol edilir
- 8. Spark Cassandra Bağlayıcısı neden NoHostAvailableException ile başarısız?
- 9. NodeJS'de MySQL Sorgusu için nestTable Seçeneği ile Hesaplanmış Alanlar
- 10. Tomcat'ta NIO Bağlayıcısı
- 11. Combo yığınlı çubuk grafikte pointDot seçeneği nasıl ayarlanır
- 12. Fluent NHibernate'de "Set null" için "cascade delete" seçeneği nasıl ayarlanır?
- 13. MySQL: Birincil Anahtarı phpMyAdmin'de nasıl ayarlanır?
- 14. C# projesinde #define nasıl ayarlanır? #
- 15. C# ile MySQL üzerinden Bağlayıcı/NET
- 16. Spark Couchbase bağlayıcısı DCP
- 17. D8048: C dosyası 'openssl \ applink.c' ile/ZW seçeneği
- 18. C# ile ASP.NET'te "httpRuntime maxRequestLength" "httpRuntime maxRequestLength" nasıl ayarlanır
- 19. Web Bağlayıcısı Nasıl Yapılandırılır? Metrics.log Değerler
- 20. CSV MySQL İLE MySQL İLE YÜKLENMESİ
- 21. XAMPP'de "max_allowed_packet" nasıl ayarlanır?
- 22. Javascript ile strftime nasıl ayarlanır?
- 23. MDMailComposeViewController ile hesaplamalar nasıl ayarlanır
- 24. EJS ile HTML seçme seçeneği
- 25. MuleSoft ESB ile TTY Uzantısı'nda AMQP Bağlayıcısı Kullanarak İleti Gönderme
- 26. xls2csv: komut satırı seçeneği ile
- 27. MariaDB, mysql sunucularından çoğaltmak için belirli veritabanı biçemleri nasıl ayarlanır
- 28. Seçeneği
- 29. Mysql 5.7 ile uyumsuzluk
- 30. Tarantool'un PHP 7 için bağlayıcısı var mı?
C API'sinde, bir sorgu başarısız olursa, veritabanına ping atmak ve sorguyu yeniden denemek yaygın bir uygulamadır. – chrisaycock
Sorgulama başarısız olursa yeniden bağlayabilirim (Mysql sunucusu kayboldu, Bağlantı sırasında bağlantı kesildi vb) ancak http://dev.mysql.com/doc/refman/5.0/en/connector-j adresinde belirtildiği gibi autoReconnect'i ayarlamak istiyorum -reference-configuration-properties.html – xdebug