打开 ODBC 数据库时 Qt 应用程序崩溃
Qt app crash when opening ODBC db
我正在开发一个与外部 ODBC 数据库连接的应用程序。
当我在 Qt 上 运行 它时,一切正常,但是当我尝试独立打开时它总是在 m_db->open().
上崩溃
当应用程序因以下错误而崩溃时:
Segmentation fault (core dumped)
代码如下:
m_db = new QSqlDatabase(QSqlDatabase::addDatabase("QODBC","edb"));
m_db->setDatabaseName(m_line);
m_db->open(); // <-// app crash here!
其中:
m_line = "Driver=/opt/sqlanywhere12/lib64/libdbodbc12.so;CommLinks=tcpip(Host=ip;port=port);ServerName=db;DatabaseName=db;Uid=uid;Pwd=psswd;"
有人知道吗?
我是 运行宁 Ubuntu 14.04 64 位。
谢谢,
编辑
好吧,经过更多测试,如果我从 m_line 变量中删除驱动程序配置,它似乎不会崩溃,但显然,它会停止工作...
EDIT2
从 Qt creator 配置自定义 运行 后,它说反汇编程序的断点是 0x7ffff6a777b9。这是什么意思?
那是而不是您使用QSqlDatabase
的方式。 QSqlDatabase
实例是可通过连接名称检索的内部连接句柄,它们不控制连接的生命周期。
所以它应该在 stack:
上声明
m_db = QSqlDatabase::addDatabase("QODBC","edb"));
m_db.setDatabaseName(m_line);
m_db.open();
好吧,有史以来最愚蠢的陷阱......
我忘记在执行时添加 LD_LIBRARY_PATH。
我正在开发一个与外部 ODBC 数据库连接的应用程序。 当我在 Qt 上 运行 它时,一切正常,但是当我尝试独立打开时它总是在 m_db->open().
上崩溃当应用程序因以下错误而崩溃时:
Segmentation fault (core dumped)
代码如下:
m_db = new QSqlDatabase(QSqlDatabase::addDatabase("QODBC","edb"));
m_db->setDatabaseName(m_line);
m_db->open(); // <-// app crash here!
其中:
m_line = "Driver=/opt/sqlanywhere12/lib64/libdbodbc12.so;CommLinks=tcpip(Host=ip;port=port);ServerName=db;DatabaseName=db;Uid=uid;Pwd=psswd;"
有人知道吗?
我是 运行宁 Ubuntu 14.04 64 位。 谢谢,
编辑
好吧,经过更多测试,如果我从 m_line 变量中删除驱动程序配置,它似乎不会崩溃,但显然,它会停止工作...
EDIT2
从 Qt creator 配置自定义 运行 后,它说反汇编程序的断点是 0x7ffff6a777b9。这是什么意思?
那是而不是您使用QSqlDatabase
的方式。 QSqlDatabase
实例是可通过连接名称检索的内部连接句柄,它们不控制连接的生命周期。
所以它应该在 stack:
m_db = QSqlDatabase::addDatabase("QODBC","edb"));
m_db.setDatabaseName(m_line);
m_db.open();
好吧,有史以来最愚蠢的陷阱...... 我忘记在执行时添加 LD_LIBRARY_PATH。