我很难克服这个错误。最近,从Ubuntu 14.04的VM改为使用Ubuntu 15.10作为主机操作系统。现在我对这个项目有很多问题;这是最近的一次。我在执行调用此函数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。
答案 0 :(得分:1)
对于任何可能遇到相同问题的人,此问题已得到解决。当我转到Ubuntu 15.10时,我使用了与上次设置时相同的模式模型。在针对测试项目的完全独立的模式测试之后,我注意到没有问题。这给了我预感,在这个版本的MySQL和Ubuntu中重新创建我的架构可能会缓解一些问题。惊喜,它做到了。之后我重新创建了用户“CANS_OPERATION”。我上面的摘录工作了。为了使MATLAB包装器能够与它一起使用,我将mex函数的推荐g ++ - 4.7编译器更改为最新版本。希望这能找到合适的人。