Ubuntu下Qt连接MySql提示以下错误,暂时未找到解决方法
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
failed to setup db
出现这个问题的原因是Qt中没有MySql driver或者是版本有问题导致的,解决的方法是找到Qt源码重新编译MySql driver的驱动。
官方提供的驱动编译方法:
How to Build the QMYSQL Plugin on Unix and macOS
You need the MySQL header files and as well as the shared library libmysqlclient.so. Depending on your Linux distribution you may need to install a package which is usually called "mysql-devel".
Tell qmake where to find the MySQL header files and shared libraries (here it is assumed that MySQL is installed in /usr/local) and run make:
cd $QTDIR/qtbase/src/plugins/sqldrivers/mysql
qmake "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro
make
After installing Qt, you also need to install the plugin in the standard location:
cd $QTDIR/qtbase/src/plugins/sqldrivers/mysql
make install
MySql driver源码路径:[qt安装路径]/Qt5.8.0/5.8/Src/qtbase/src/plugins/sqldrivers/mysql
执行以下步骤:
step1:
qmake project
step2:
qmake
step3:
make
可能遇到以下问题:
error1:
make: *** [../../../../plugins/sqldrivers/libqsqlmysql.so] Error 1
这个问题是由于依赖关系不完整导致的。进入Qt插件的安装目录查看依赖关系:
目录位置:[Qt安装目录]//Qt5.8.0/5.8/gcc_64/plugins/sqldrivers
通过ls命令可以看到该目录下有以下几个文件:
libqsqlite.so libqsqlmysql.so libqsqlpsql.so
其中[libqsqlmysql.so]即是我们所需要的mysql驱动插件,通过ldd命令查看其依赖关系
从图中可以看到有三个依赖项没有找到,因此需要我们手动补齐依赖向。通过locate命令查找libssl和libcrypto可以知道这两个库文件在目录/lib/x86_64-linux-gnu下,因此cd至这个目录,通过ln命令创建软链接。
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10
再次回到sql的插件目录查看依赖关系,libssl和libcrypto即已补全,接下来再回到sql源码目录进行make即可顺利通过,随后make install便可成功安装myqsl插件。
参考文档:http://blog.csdn.net/qq_28851503/article/details/52422302