我有一個小型C++項目,需要從中訪問一個mySQL DB,所以我已經爲C++設置了mySQL連接器。 這是在OS X 10.10上完成的,我沒有遇到編譯/鏈接問題。Mysql連接器connect()問題
我已經寫了所有的mysql的東西的類,並在構造函數中我想建立到數據庫的連接。但是,這似乎很艱難。
下面是相關的部分從類:
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");
然後,我在我的last_error字符串中有這個:
Unknown MySQL server host '???' (0)
「主機」有時甚至不同,即使我不在代碼中改變它。這看起來像是在內部讀取不同的內存位置,因爲它應該是。 但即使我直接傳遞connect()變量時,我得到這個錯誤。將這三個變量內部保存在mysql類中並使用它們調用connect()時也是如此。
任何人有一個想法可能會導致這種情況?我有一個類似的實現在一個不同的項目中,這可以很好地工作,所以我有點困惑:/
看起來像傳遞「服務器」的內存損壞。 – blackpen
葉這就是我的想法,但我不知道爲什麼它會損壞.. –
你可以創建一個最小的測試用例,重現問題,然後進入調試器,並破壞** MySQL_Driver :: connect **的代碼。這是您想要打印** hostName **的地方。 – blackpen