작은 C++ 프로젝트가있어서이 프로젝트에서 mySQL DB에 액세스해야하므로 C++ 용 mySQL Connector를 설치해야합니다. 이것은 OS X 10.10에서 수행되며 컴파일/링크에는 아무런 문제가 없습니다.Mysql Connector connect() issues
나는 모든 mysql 항목에 대한 클래스를 작성했으며 생성자에서 db에 대한 연결을 설정하려고한다. 그러나 이것은 다소 어려워 보입니다.
mysql db("tcp://127.0.0.1:3306", "root", "secretsecret");
:이 같은 클래스의 객체를 생성 할 때, 그러나
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();
}
}
: 구현 여기
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 = "";
};
그리고 다음은
는 관련 클래스에서 일부입니다다음이 last_error 문자열에 있습니다.
Unknown MySQL server host '???' (0)
"호스트"는 때로는 코드에서 변경하지 않아도 다를 수 있습니다. 이것은 내부적으로 다른 메모리 위치가 있어야하는 것처럼 읽혀지는 것처럼 보입니다. 하지만 직접 호출 할 때 connect() 변수를 직접 전달하더라도이 오류가 발생합니다. 이 세 변수를 mysql 클래스에 내부적으로 저장하고 connect()를 호출 할 때 사용합니다.
누구든지이 문제를 일으킬 수있는 아이디어가 있습니까? 다른 프로젝트에서 이와 비슷한 작업을 수행하여 잘 작동하지만 다소 혼란 스럽습니다./
"서버"가 전달되는 메모리 손상과 비슷합니다. – blackpen
그게 내가 생각한 그게 뭔지는 모르겠지만 .. 왜 손상되는지 모르겠다. –
최소한의 테스트 케이스를 만들고 문제를 재현 한 다음 디버거로 들어가서 ** MySQL_Driver :: connect **에서 코드를 깨면된다. 그것은 ** hostName **을 인쇄하고자하는 장소입니다. – blackpen