繁体   English   中英

MySQL C ++连接器:SIGABRT连接到数据库

[英]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 ++连接器与某些东西不兼容...百万美元的问题。 所以我的问题是如何解决这个问题。 以下是更多信息:

系统信息:

  • Ubuntu 15.10
  • MySQL:版本14.14发行版5.6.27

代码摘录:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM