[英]MySQL C++ Connector: SIGABRT Connecting to Database
我很难克服这个错误。 最近,从Ubuntu 14.04的VM更改为将Ubuntu 15.10用作主机OS。 现在,我在这个项目中遇到许多问题。 这是最新的。 在执行调用此函数DB_Interface::DB_Interface(int Preset)
的代码时,我收到SIGABRT信号。 当从可执行文件中调用此函数时,第二个try{}catch{}
块中会出现错误。 所以我不认为这是SetSchema
。
我试过重新安装所有的mysql库和工具( HERE )。 我已经检查了使用相同的凭据从命令提示符访问服务器,没有问题。 所以我倾向于C ++连接器与某些东西不兼容...百万美元的问题。 所以我的问题是如何解决这个问题。 以下是更多信息:
系统信息:
代码摘录:
DB_Interface::DB_Interface(int Preset) {
try{
driver = sql::mysql::get_mysql_driver_instance();
flags[0] = 0;
}
catch(...)
{
flags[0] = 1;
printf("DB_Interface: Flag 0 has been set.");
throw Except;
}
try{
con = driver->connect("localhost:3306", "CANS_OPERATION", "SMOOTH_OPERATOR");
flags[1] = 0;
}
catch(...)
{
flags[1] = 1;
printf("DB_Interface: Flag 1 has been set.");
throw Except;
}
try{
con->setSchema("CANS_SQL"); //SIGABRT occurs in executing this line.
std::string Query = "UNLOCK TABLES";
sql::Statement *stmt;
stmt = con->createStatement();
stmt->execute(Query);
flags[4] = 0;
}
catch(sql::SQLException &e)
{
flags[4] = 1;
printf("DB_Interface: Flag 4 has been set");
throw Except;
}
编辑1以下尝试也没有成功。
sudo apt-get install cpp:i386 gcc:i386 g++-5:i386 gcc-5:i386 g++:i386 libboost-dev:i386 binutils:i386
随后重新安装libmysqlcppconn-dev。
对于可能存在相同问题的任何人,此问题已得到解决。 当我移至Ubuntu 15.10时,我使用了与上次设置相同的架构模型。 在针对测试项目使用完全独立的架构进行测试之后,我没有发现任何问题。 这使我直觉,在此版本的MySQL和Ubuntu中重新创建架构可以缓解某些问题。 惊奇,惊奇。 之后,我重新创建了用户“ CANS_OPERATION”。 然后,我上面的摘录成功了。 为了使MATLAB包装器也可以使用它,我从推荐的用于mex函数的g ++-4.7编译器更改为最新版本。 希望这能找到一个很好的人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.