我有一个小型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