我有一个小型 C++ 项目,需要从中访问 mySQL DB,因此我为 C++ 设置了 mySQL Connector。 这是在 OS X 10.10 上完成的,编译/链接没有任何问题。
我已经为所有 mysql 内容编写了一个类,并且在构造函数中我想设置与数据库的连接。不过,这似乎有点难。
以下是类(class)中的相关部分:
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() 时相同。
有人知道是什么原因造成的吗?我在另一个项目中有类似的实现,它工作得很好,所以我有点困惑:/
最佳答案
这是一个post与您的情况相匹配(C++ 连接器在 Linux 上工作,但在 OSX 上失败)。
通过使用 mysql 日志记录/跟踪或在调试器中运行它,您可能能够收集更多信息以向 mysql 开发人员报告。你可能会有更好的运气。
关于c++ - Mysql 连接器 connect() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39477264/