У меня есть небольшой проект на C++ и мне нужно получить доступ к нему из базы mySQL, поэтому у меня есть настройка mySQL Connector для C++. Это делается на OS X 10.10, и у меня нет проблем с компиляцией/компоновкой.Mysql Connector connect() issues
Я написал класс для всего материала mysql, а в конструкторе я хочу установить соединение с db. Однако это кажется довольно тяжелым.
Вот соответствующая часть из класса:
class mysql{
public:
mysql(std::string server, std::string user, std::string password);
private:
sql::mysql::MySQL_Driver *driver;
sql::Connection *con;
std::string last_error = "";
};
А вот реализация:
mysql::mysql(std::string server, std::string user, std::string password){
driver = sql::mysql::get_mysql_driver_instance();
try{
con = driver->connect(server, user, password);
last_error = "";
}
catch(sql::SQLException &e){
last_error = e.what();
}
}
Однако, когда я создать объект этого класса, как это:
mysql db("tcp://127.0.0.1:3306", "root", "secretsecret");
Тогда у меня это в моей последней строке:
Unknown MySQL server host '???' (0)
«Хост» иногда отличается даже тем, что я не изменяю его в коде. Похоже, что внутренне другое место памяти считывается так, как должно быть. Но даже если я передаю переменные connect() непосредственно, когда я его вызываю, я получаю эту ошибку. То же самое, сохраняя эти три переменные внутри класса mysql и используя их для вызова connect().
У кого-нибудь есть идея, что может вызвать это? У меня аналогичная реализация в другом проекте, где это работает отлично, поэтому я не смущен:/
Это похоже на повреждение памяти, где передается «сервер». – blackpen
Ye thats, что я думал, но я понятия не имею, почему он поврежден. –
Вы можете создать минимальный тестовый пример, воспроизвести проблему, затем перейти в отладчик и разбить код на ** MySQL_Driver :: connect **. Это то место, где вы хотите напечатать ** hostName **. – blackpen