QT SQL Driver not loaded的问题

在采用QT5 编写SQL相关程序时,执行的时候出现sql driver not loaded的情况。

采用如下语句:

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
qDebug() << db.lastError();

 出错提示是: 
  

QSqlDatabase: QPSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

QSqlError("", "Driver not loaded", "Driver not loaded")


但是提示明明是各种数据库都支持,实际尝试的时候只有QSQLITE,QODBC支持,其余的都有问题。

解决办法网上挺多的,各种都是重新编译SQL库,或者加环境变量,用depends walker等;后来采用depends walker才解决了问题。

其实就是dll之间互相引用出了问题,注意检查下面几点,都通过了应该都能解决。

1.  程序执行采用哪里的库,即PATH问题,很多时候你认为系统应该找得到的地方,其实人家并没有找到那个目录。例如在QT目录下,有好几个地方都有sqldrivers的目录,其实最后系统根本没有找到这些地方,而是找到了mingw492_32/bin目录下了

2. 32bit库和64bit库必须对应

3. depends walker可以先看看没问题的dll,例如QSQLITE,看他们找到和没找到那些库;然后再定位目标库(本例:qsqlpsql.dll)需要哪些库,一个个复制到编译器或者运行环境里面。在此例中,搜索的顺序从qsqlpsql.dll -> libpq.dll ->libintl-8.dll->libiconv-2.dll; 最后干脆把所有的dll一并Copy到d:\Qt\Qt5.5.1\5.5\mingw492_32\bin\就成功了。

你可能感兴趣的:(Database,QT,PGSQL,MYSQL)