多线程连接mysql出现段错误
在多线程中实例化mysql,连接时出现段错误,具体情况如下:
*/初始化mysqlmanager
MysqlManager(const string &_connect_url, bool _autocommit = true, bool _auto_reconect = false) {
this->connect_url = _connect_url;
this->autocomit = _autocommit;
this->auto_reconect = _auto_reconect;
this->conn = nullptr;
}
//连接到数据库
void connect(const string &_userName, const string &_password) {
mysql::MySQL_Driver *driver;
// 初始化驱动
driver = sql::mysql::get_mysql_driver_instance();
// 建立链接
ConnectOptionsMap options;
options["hostName"] = this->connect_url;
options["userName"] = _userName;
options["password"] = _password;
options["OPT_RECONNECT"] = this->auto_reconect;
options["OPT_CHARSET_NAME"] = "utf8";
this->conn = driver->connect(options);
this->conn->setAutoCommit(this->autocomit);
cout << "connect mysql:"<<this->connect_url << endl;
}
多线程中:
MysqlManager *mysql = new MysqlManager(MYSQL_URL);
mysql->connect(MYSQL_USERNAME, MYSQL_PASSWORD);//此处出现段错误
mysql版本为5.6.33 MySQL