Qt连接mysql数据库失败

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


猜你喜欢

转载自blog.csdn.net/wolf_tong/article/details/77170652