C++プログラムからMySQLデータベースへの接続に問題があります。
std::string server, user, password;
SetParams(server, user, password);
boost::shared_ptr<sql::Connection> conn;
sql::Driver *driver = get_driver_instance();
if(driver == 0) { /* error; never reached */ }
try {
conn.reset(driver->connect(server, user, password));
assert(conn != 0);
if(!conn->isClosed()) // <-- exception thrown
{
// Connection established
}
else {
// Connection failed
}
}
catch (sql::SQLException &e)
{
cerr << e.what << e.getErrorCode() << e.getSQLState() << endl;
}
関数はこのsql::Connection::isClosed()
例外をスローします:
SQLException: Connection has been closed
MySQL error code: 0
SQLState: HY000
サーバー、ユーザー、およびパスワードの値は正しく(MySQL-Workbenchから接続して機能します)、DBは稼働しています。
他にどこを見ればいいのかわからない…
ありがとう。
プラットフォーム:
Linux-OpenSuse 11.4
MySQL 5.x
MySQL Connector / C ++ 1.0.5
更新:
MySQL Connector / C ++とBoostの間で発生する可能性のある競合についてどこかで読んだので、boost::shared_ptrの代わりにプレーンポインターを使用しようとしました。何も変わっていません。
更新2:
このコードをメインプログラムから分離すると、接続は正常に行われます。
私は全体像を見なければなりません...