Qsqldatabase qpsql driver not loaded windows

I have some trouble when I want to add a database.

    _dataBase = QSqlDatabase::addDatabase("QPSQL");

After calling this method I have an error:

QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

I include to PATH variable paths to:

PostgreSQL\9.3\bin
PostgreSQL\9.3\lib
PostgreSQL\9.3\include

Also I copy folder sqldrivers to Debug folder. Also tried to copy dlls drom this folder to Debug. Doesn’t work either.

asked Oct 22, 2014 at 12:23

bin-bin's user avatar

2

I came here googling because I had the same problem in Windows.

In my case to solve the issue I had to install PostgreSQL for Windows 32 bits since my Qt target was MinGW 32 bits.

Additionally, I had to add the PATH to the PostgreSQL bin and lib directories so Qt could find the right .dlls.

@SET PATH=C:\Program Files (x86)\PostgreSQL\9.6\bin\;C:\Program Files (x86)\PostgreSQL\9.6\lib\;%PATH%

The PATH can be set before launching Qt Creator or using the Qt Creator itself via the Build Environment in the Projects pane.

answered Nov 12, 2016 at 0:49

Tarod's user avatar

TarodTarod

6,7725 gold badges44 silver badges50 bronze badges

Add the system variable QT_DEBUG_PLUGINS=1 if you want to get full information of why the QPSQL driver has not been loaded.

Probably you will discover that Qt is not able to find it. Copy and paste the output here to know what exactly happens.

Tarod's user avatar

Tarod

6,7725 gold badges44 silver badges50 bronze badges

answered Oct 22, 2014 at 13:47

0

Use depends.exe on qsqlpsql.dll and found that this dll need libpq.dll from PostgreSQL\9.3\libfolder. Add libpq.dll to Debug folder and it works:)

answered Oct 24, 2014 at 6:55

bin-bin's user avatar

bin-binbin-bin

5322 gold badges6 silver badges16 bronze badges

Try pip install PyQt5 event if you already installed it using conda or installer. It helped me.

Dijkgraaf's user avatar

Dijkgraaf

11.1k17 gold badges42 silver badges54 bronze badges

answered Jan 3, 2019 at 21:51

user10807076's user avatar

I got same problem with deploying Qt application (windeployqt didn’t help). I had to copy more .dlls (libcrypto-1_1-x64.dll, libiconv-2.dll, libintl-8.dll, libpq.dll, libssl-1_1-x64.dll, libwinpthread-1.dll) from postgreSQL bin path (c:\Program Files\PostgreSQL\12\bin) next to .exe file (according to dependency walker).

answered Nov 14, 2022 at 12:48

Ivan Kamensky's user avatar

Дано
ОС Windows 7 или 10 x64
Qt5.5.1 (mingw) (x86) или новее
PostgreSQL 10 или новее

Задача
Заставить разработанное на Qt приложение запускаться на машине без установленного Qt и PostgreSQL и подключаться к СУБД PostgreSQL.

При вызове QSqlDatabase::addDatabse(«QPSQL») программа пишет:

QSqlDatabase: QPSQL driver not loaded

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

либо вовсе:

QSqlDatabase: QPSQL driver not loaded

QSqlDatabase: available drivers:

Анализ

Как в общих чертах происходит работа с БД в Qt:
Функция QSqlDatabase::addDatabse живет в Qt5Sql.dll, и при вызове пытается динамически подгрузить qsqlpsql.dll, которая тянет за собой кучу других dll, часть из которых живет в составе PostgreSQL.

Разберемся, как решать эту и подобные проблемы, связанные с dll.

Принципиально существует два способа связывания dll и exe-файлов: явное и неявное. При загрузке SQL-драйверов Qt задействованы оба способа.
Сначала при запуске exe-файла происходит поиск и загрузка требуемых dll-библиотек, в т.ч. Qt5Sql.dll. Если какие-то библиотеки не найдены, то при запуске программы Windows сообщит об этом.

В процессе работы программы при вызове QSqlDatabase::addDatabse делается динамический поиск dll-файлов SQL-драйверов в определенных каталогах. Для драйвера QPSQL должна быть найдена библиотека qsqlpsql.dll, после чего выполняется попытка ее загрузки.

Для этого загружаются другие неявно связанные с ней dll-библиотеки вместе со своими зависимостями. Если всё дерево необходимых dll-библиотек найдено, то qsqlpsql.dll будет успешно загружена и Qt сможет использовать этот драйвер.

Но сложность в том, что при отсутствии какой-либо библиотеки Windows не выдаст красивого сообщения об этом и придется разбираться другими способами.

Разбираемся

Нам надо выяснить, какие dll-библиотеки требуются для работы программы и куда их нужно положить.

Для этого достаточно в общих чертах представлять, как Windows ищет dll, а именно, что сначала производится поиск в каталоге exe-файла, а в конце — по путям, указанным в переменной окружения PATH. PATH удобно использовать на машине разработчика, но этот вариант рассматривать не будем т.к. это не соответствует изначальной задаче. 

Также надо знать, в каких каталогах QSqlDatabase::addDatabse ищет драйверы SQL. Существуют способы указать Qt альтернативные пути, где искать плагины (в т.ч. SQL), но не будем заниматься и этим.

Исследуем

Используем Прекрасную программы DependencyWalker, которая показывает дерево зависимостей dll и exe-файлов.

Сначала открываем с помощью неё исполняемый файл программы и смотрим, какие dll-библиотеки должны быть доступны, ищем их в каталоге установки Qt и компилятора и кладем рядом с исполняемым файлом. Теперь программа должна запускаться и доходить до вызова QSqlDatabase::addDatabse.

Чтобы увидеть, где Qt ищет SQL-драйверы, добавляем переменную окружения QT_PLUGIN_PATH = 1 (например, в настройках параметров запуска приложения в QtCreator), запускаем программу и изучаем ее вывод. Кроме прочего должны быть примерно такие строки:

QFactoryLoader::QFactoryLoader() checking directory path «C:/Qt/Qt5.5.1/5.5/mingw492_32/plugins/sqldrivers»

QFactoryLoader::QFactoryLoader() checking directory path «C:/projects/build-foobar-Desktop-Release/release/sqldrivers»

Из них становится ясно, что по умолчанию Qt ищет SQL-драйверы в каталоге установки и в подкаталоге sqldrivers рядом с exe-файлом. Поэтому находим qsqlpsql.dll в каталоге установки Qt (примерно в C:\Qt\5.5.1\mingw491_32\bin\plugins\sqldrivers) и копируем в подкаталог sqldrivers рядом с exe-файлом.
Если все сделано верно, то после вызова QSqlDatabase::addDatabse должно вывестись:

QSqlDatabase: available drivers: QPSQL QPSQL7

Если не удалось, то попробовать положить qsqlpsql.dll в plugins/sqldrivers.

Далее с помощью DependencyWalker исследуем зависимости qsqlpsql.dll.

Кроме зависимостей от библиотек Qt и компилятора, будет зависимость от libpq.dll.

Проще всего взять libpq.dll из каталога установки PostgreSQL (примерно в C:\Program Files (x86)\PostgreSQL\10\bin). Здесь есть две важнейшие особенности:

1) разрядность libpq.dll должна совпадать с разрядностью приложения. Под Windows стандартный SDK Qt5 с официального сайта 32-разрядный. т.е. необходима 32-разрядная версия libpq.dll, которую можно взять из x86-версии PostgreSQL. Это не влияет на разрядность сервера PostgreSQL, к которому будет подключаться приложение;

2) libpq.dll необходимо располагать рядом с exe-файлом, а не рядом с qsqlpsql.dll. Все остальные dll, от которых зависит libpq.dll, необходимо класть также рядом с exe-файлом приложения.

Теперь все тем же DependencyWalker исследуем зависимости libpq.dll в каталоге установки PostgreSQL.

В зависимости от версии PostgreSQL у libpq.dll могут быть разные dll-зависимости. Находим их все в каталоге установки PostgreSQL и копируем рядом с exe-файлом. Не забываем пройтись по всем зависимостям всех добавляемых dll. 

Сравниваем

Из установленного PostgreSQL 9.4 нужно позаимствовать следующие библиотеки:

libpq.dll

ssleay32.dll

libeay32.dll

libintl-8.dll

libiconv-2.dll

Для PostgreSQL 10 набор уже другой:

libpq.dll

libssl-1_1.dll

libcrypto-1_1.dll

libintl-8.dll

libiconv-2.dll

Более новые версии PostgreSQL выпускаются только в редакции x64, поэтому для получения x86-версии libpq.dll и других библиотек, возможно, придется собирать их из исходников самостоятельно (я не пробовал).

Что еще
возможно, Вам, как и мне, потребуется откуда-то добыть msvcr120.dll (или что-то вроде того в новых версиях Windows и PostgreSQL) и тоже бросить рядом с exe-файлом.

Итого
У меня получилась следующая структура каталога простой консольной программы, выполняющей загрузку драйвера БД:

qpsqltest.exe

sqldrivers/qsqlpsql.dll

Qt5Core.dll

Qt5Sql.dll

libpq.dll

libssl-1_1.dll

libcrypto-1_1.dll

libintl-8.dll

libiconv-2.dll

libwinpthread-1.dll

libstdc++-6.dll

libgcc_s_dw2-1.dll

msvcr120.dll

Архив c примером на гуглодиске

updated: this is what I got from QT_DEBUG_PLUGINS:

"The plugin 'D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlodbcd.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
         not a plugin
QFactoryLoader::QFactoryLoader() looking at "D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll"
Found metadata in lib D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll, metadata=
{
    "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
    "MetaData": {
        "Keys": [
            "QPSQL7",
            "QPSQL"
        ]
    },
    "archreq": 0,
    "className": "QPSQLDriverPlugin",
    "debug": false,
    "version": 331264
}


Got keys from plugin meta data ("QPSQL7", "QPSQL")
QFactoryLoader::QFactoryLoader() looking at "D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll"
Found metadata in lib D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll, metadata=
{
    "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
    "MetaData": {
        "Keys": [
            "QPSQL7",
            "QPSQL"
        ]
    },
    "archreq": 1,
    "className": "QPSQLDriverPlugin",
    "debug": true,
    "version": 331264
}


"The plugin 'D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
         not a plugin
QFactoryLoader::QFactoryLoader() checking directory path "C:/Users/nkbar/Documents/build-myRPG_alpha-Desktop_Qt_5_14_0_MSVC2017_64bit-Release/Server/release/sqldrivers" ...
Cannot load library D:\Qt\5.14.0\msvc2017_64\plugins\sqldrivers\qsqlpsql.dll: The specified module could not be found.
QLibraryPrivate::loadPlugin failed on "D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll" : "Cannot load library D:\\Qt\\5.14.0\\msvc2017_64\\plugins\\sqldrivers\\qsqlpsql.dll: The specified module could not be found."
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
QFactoryLoader::QFactoryLoader() checking directory path "D:/Qt/5.14.0/msvc2017_64/plugins/accessible" ...
QFactoryLoader::QFactoryLoader() checking directory path "C:/Users/nkbar/Documents/build-myRPG_alpha-Desktop_Qt_5_14_0_MSVC2017_64bit-Release/Server/release/accessible" ...
QFactoryLoader::QFactoryLoader() checking directory path "D:/Qt/5.14.0/msvc2017_64/plugins/accessiblebridge" ...
QFactoryLoader::QFactoryLoader() checking directory path "C:/Users/nkbar/Documents/build-myRPG_alpha-Desktop_Qt_5_14_0_MSVC2017_64bit-Release/Server/release/accessiblebridge" ...

I checked «D:\Qt\5.14.0\msvc2017_64\plugins\sqldrivers\qsqlpsqld.dll» and I did found the dll which the debugger reports as missing. And I am also confused about why it complains about «‘D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll’ uses incompatible Qt library.

The kit I am using is msvc2017 64bit and the postgre I downloaded is also for 64bit.


Errors:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

OS: win10 64bit
qt: 5.14.0
kit: msvc2017 64bit
PostgreSQL: 12.1

Sqlite works well, but my project just can’t work with PostgreSQL.

I followed the official instruction: https://doc.qt.io/qt-5/sql-driver.html#qpsql

Got no error but still couldn’t connect to PostgreSQL. Same error messages saying that «QPSQL driver not loaded».

I have also tried other solutions from here and stackoverflow and reinstall my qt 4 times, No luck still. I am really frustrated now and don’t know what to do.

the .pro:

QT += core network gui widgets sql

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

QTPLUGIN += QPSQL
QT_DEBUG_PLUGINS=1

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

#INCLUDEPATH += "D:\psql\include"

#LIBS += "D:\psql\lib\libpq.lib"


SOURCES += \
    battle.cpp \
    creature.cpp \
    player.cpp \
    server.cpp \
    servermain.cpp \
    serverwindow.cpp \
    serverworker.cpp

HEADERS += \
    battle.h \
    creature.h \
    data_structs.h \
    player.h \
    server.h \
    serverwindow.h \
    serverworker.h

FORMS += \
    serverwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES += \
    resource.qrc

If you’re trying to use Postgres with PyQt5/6 or PySide2/PySide6 you may have come across an issue with loading the driver.
Qt (correctly) lists the driver as available in Qt, but when trying to load it the load will fail. This is because the Qt
library depends on Postgres’ own library, which must be available in the path to load.

The following script will let you test if the Postgres library is loading correctly.

  • PyQt5
  • PyQt6
  • PySide2
  • PySide6

python

from PyQt5.QtSql import QSqlDatabase
from PyQt5.QtWidgets import QApplication

app = QApplication([])

db = QSqlDatabase("QPSQL")
print("Available drivers", db.drivers())

if not db.open():
    print("Unable to connect.")
    print('Last error', db.lastError().text())
else:
    print("Connection to the database successful")

python

from PyQt6.QtSql import QSqlDatabase
from PyQt6.QtWidgets import QApplication

app = QApplication([])

db = QSqlDatabase("QPSQL")
print("Available drivers", db.drivers())

if not db.open():
    print("Unable to connect.")
    print('Last error', db.lastError().text())
else:
    print("Connection to the database successful")

python

from PySide2.QtSql import QSqlDatabase
from PySide2.QtWidgets import QApplication

app = QApplication([])

db = QSqlDatabase("QPSQL")
print("Available drivers", db.drivers())

if not db.open():
    print("Unable to connect.")
    print('Last error', db.lastError().text())
else:
    print("Connection to the database successful")

python

from PySide6.QtSql import QSqlDatabase
from PySide6.QtWidgets import QApplication

app = QApplication([])

db = QSqlDatabase("QPSQL")
print("Available drivers", db.drivers())

if not db.open():
    print("Unable to connect.")
    print('Last error', db.lastError().text())
else:
    print("Connection to the database successful")

Executing the above script in a new command prompt will give the following
output (if Postgres is not accessible).

command

>python test.py
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
Available drivers ['QSQLITE', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7']
Unable to connect.
Last error Driver not loaded Driver not loaded

The list of «available drivers» shows the Qt drivers which are available in your PyQt5 (or PyQt6, or PySide2, or PySide6) installation. For example, in my installation the driver files are under site-packages\PyQt5\Qt5\plugins\sqldrivers

command

C:\Users\Martin\AppData\Local\Programs\Python\Python37\Lib\site-packages\PyQt5\Qt5\plugins\sqldrivers> dir

 Volume in drive C has no label.
 Volume Serial Number is 0A6A-65ED

 Directory of C:\Users\Martin\AppData\Local\Programs\Python\Python37\Lib\site-packages\PyQt5\Qt5\plugins\sqldrivers

02/12/2021  14:35    <DIR>          .
02/12/2021  14:35    <DIR>          ..
02/12/2021  14:35         1,412,080 qsqlite.dll
02/12/2021  14:35            98,288 qsqlodbc.dll
02/12/2021  14:35            79,856 qsqlpsql.dll
               3 File(s)      1,590,224 bytes
               2 Dir(s)  174,429,970,432 bytes free

The Driver not loaded error is occurring because the Qt Postgres driver cannot find the Postgres libraries. The Qt Postgres driver is a wrapper around these libraries, rather than a complete implementation of Postgres itself.

To get this working you need to ensure the required Postgres library files are available in your path.
You can do this by adding your Postgres installation bin folder to your path. For example, on my computer Postgres is installed under C:\Program Files\PostgreSQL\14\ (I’m using version 14). We need to add to the Postgres bin folder to the PATH as this contains libpq.dll (Postgres Access Library) which Qt needs.

command

SET PATH=%PATH%;C:\Program Files\PostgreSQL\14\bin

With that in place, running the script again will show that that driver has loaded successfully. The
connection still isn’t working, since it needs the username and password set. But if you get this far
you know the driver is working properly.

command

U:\home\martin\www\pythonguis\content\faq\qt-postgres-driver>python test.py
Available drivers ['QSQLITE', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7']
Unable to connect.
Last error connection to server at "localhost" (::1), port 5432 failed: fe_sendauth: no password supplied
QPSQL: Unable to connect

We can modify the test script to add your username and password to complete the connection.

  • PyQt5
  • PyQt6
  • PySide2
  • PySide6

python

from PyQt5.QtSql import QSqlDatabase
from PyQt5.QtWidgets import QApplication

app = QApplication([])

db = QSqlDatabase("QPSQL")
db.setUserName("postgres")  # postgres is the default root username
db.setPassword("")    # add your password here
print("Available drivers", db.drivers())

if not db.open():
    print("Unable to connect.")
    print('Last error', db.lastError().text())
else:
    print("Connection to the database successful")

python

from PyQt6.QtSql import QSqlDatabase
from PyQt6.QtWidgets import QApplication

app = QApplication([])

db = QSqlDatabase("QPSQL")
db.setUserName("postgres")  # postgres is the default root username
db.setPassword("")    # add your password here
print("Available drivers", db.drivers())

if not db.open():
    print("Unable to connect.")
    print('Last error', db.lastError().text())
else:
    print("Connection to the database successful")

python

from PySide2.QtSql import QSqlDatabase
from PySide2.QtWidgets import QApplication

app = QApplication([])

db = QSqlDatabase("QPSQL")
db.setUserName("postgres")  # postgres is the default root username
db.setPassword("")    # add your password here
print("Available drivers", db.drivers())

if not db.open():
    print("Unable to connect.")
    print('Last error', db.lastError().text())
else:
    print("Connection to the database successful")

python

from PySide6.QtSql import QSqlDatabase
from PySide6.QtWidgets import QApplication

app = QApplication([])

db = QSqlDatabase("QPSQL")
db.setUserName("postgres")  # postgres is the default root username
db.setPassword("")    # add your password here
print("Available drivers", db.drivers())

if not db.open():
    print("Unable to connect.")
    print('Last error', db.lastError().text())
else:
    print("Connection to the database successful")

…and then the connection will complete as expected.

command

>python test-userpass.py
Available drivers ['QSQLITE', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7']
Connection to the database successful

Over 10,000 developers have bought Create GUI Applications with Python & Qt!

[[ discount.discount_pc ]]% OFF for
the next [[ discount.duration ]]
[[discount.description ]]
with the code [[ discount.coupon_code ]]

Purchasing Power Parity

Developers in [[ country ]] get [[ discount.discount_pc ]]% OFF on all books & courses
with code [[ discount.coupon_code ]]

Если вы работаете с СУБД PostgreSQL в своем проекте на Qt под операционной системой Windows, вы, возможно, столкнулись с проблемой «QPSQL driver not loaded». Эта ошибка связана с отсутствием загрузки драйвера для работы с PostgreSQL. В этой статье мы рассмотрим несколько способов решения этой проблемы.

Одним из самых простых способов решения проблемы «QPSQL driver not loaded» является установка необходимого драйвера PostgreSQl. Для этого вам необходимо скачать соответствующий драйвер с официального сайта PostgreSQL и установить его на своем компьютере. После установки драйвера, перезапустите Qt и проверьте, появилась ли ошибка.

Если установка драйвера не решила проблему, то возможно, вам нужно добавить путь к драйверу в переменную среды PATH. Чтобы это сделать, перейдите в свойства компьютера, затем выберите «Дополнительные параметры системы», перейдите на вкладку «Дополнительно» и нажмите на кнопку «Переменные среды». В разделе «Системные переменные» найдите переменную PATH и добавьте туда путь к драйверу PostgreSQL. После этого перезапустите Qt и проверьте, появилась ли ошибка.

Если эти методы не помогли решить проблему «QPSQL driver not loaded», то, возможно, проблема связана с неправильно настроенным путем к драйверу или с несовместимостью версий PostgreSQL и Qt. В этом случае рекомендуется проверить версии драйвера и Qt, а также убедиться в правильности указания пути к драйверу в проекте Qt. Если все указанные способы не помогли решить проблему, рекомендуется обратиться за помощью к опытным разработчикам или на форумы сообщества Qt.

Содержание

  1. Что делать, если возникла проблема «Qpsql driver not loaded» на Qt Windows
  2. Проверка версии Qt и установленных компонентов
  3. Проверка наличия необходимых библиотек
  4. Настройка окружения и переменных среды
  5. Переустановка PostgreSQL и Qt

Что делать, если возникла проблема «Qpsql driver not loaded» на Qt Windows

Если вы разрабатываете приложение на Qt под Windows и столкнулись с ошибкой «Qpsql driver not loaded», это означает, что Qt не может найти и загрузить драйвер для работы с PostgreSQL. Эта проблема может возникнуть по нескольким причинам, но ее можно решить, следуя указанным ниже шагам.

  1. Убедитесь, что у вас есть установленный драйвер для работы с PostgreSQL. Как правило, драйвер должен поставляться с самим Qt, но иногда требуется отдельная установка. Проверьте, что драйвер присутствует в каталоге, где установлен Qt (обычно это папка «plugins\sqldrivers»). Если драйвер отсутствует, вам необходимо его установить.
  2. Убедитесь, что путь к папке с драйвером прописан в переменной среды PATH. Чтобы это сделать, откройте «Панель управления» -> «Система и безопасность» -> «Система» -> «Дополнительные параметры системы» -> «Переменные среды». В разделе «Системные переменные» найдите переменную среды PATH и проверьте, что она содержит путь к каталогу с драйвером. Если путь отсутствует, добавьте его, нажав кнопку «Редактировать» и внесите необходимые изменения.
  3. Убедитесь, что использование драйвера для работы с PostgreSQL указано в файле проекта Qt. Чтобы это сделать, откройте файл проекта Qt (.pro) и добавьте строку «QT += sql» в секцию «CONFIG», а также добавьте строку «QT += sql-psql» для работы с PostgreSQL. Сохраните изменения и перекомпилируйте проект.
  4. Перезапустите ваше приложение и проверьте, исправилась ли проблема. Если ошибка «Qpsql driver not loaded» по-прежнему появляется, попробуйте выполнить очистку проекта и перекомпиляцию, а также перезагрузите компьютер.
  5. Если ни один из вышеперечисленных методов не помогает решить проблему, попробуйте переустановить Qt и драйвер для работы с PostgreSQL. Убедитесь, что у вас установлена последняя версия Qt и драйвера, и повторите все шаги заново.

Следуя этим шагам, вы сможете решить проблему «Qpsql driver not loaded» на Qt Windows и продолжить разработку вашего приложения без ошибок. Удачи!

Проверка версии Qt и установленных компонентов

Перед решением проблемы «Qpsql driver not loaded» на Qt Windows необходимо проверить версию Qt и установленные компоненты. Версия Qt должна быть совместима с используемой версией PostgreSQL и операционной системой.

Для проверки версии Qt можно использовать следующий код:


#include <QtCore/QtGlobal>
#include <QDebug>
int main()
{
// Вывод версии Qt
qDebug() << "Qt version:" << qVersion();
return 0;
}

Запустив данный код, вы увидите версию Qt в консоли. Если версия Qt соответствует требуемым условиям, то переходим к проверке наличия установленных компонентов.

Для использования PostgreSQL в Qt необходимо установить дополнительный компонент — драйвер QPSQL. Проверить его наличие можно следующим образом:


#include <QtSql/QSqlDatabase>
#include <QDebug>
int main()
{
// Проверка наличия драйвера QPSQL
if (QSqlDatabase::isDriverAvailable("QPSQL"))
qDebug() << "QPSQL driver is available";
else
qDebug() << "QPSQL driver is not available";
return 0;
}

Запустив данный код, в консоли будет выведено сообщение о доступности или недоступности драйвера QPSQL. Если драйвер отсутствует, следует установить его с помощью утилиты qtplugininfo, которая поставляется с Qt Framework.

Таким образом, проведя проверку версии Qt и наличия установленных компонентов, можно дальше искать решение проблемы «Qpsql driver not loaded» на Qt Windows.

Проверка наличия необходимых библиотек

Проблема «Qpsql driver not loaded» на Qt Windows может возникать из-за отсутствия необходимых библиотек на вашем компьютере. Чтобы решить эту проблему, вам необходимо проверить наличие следующих библиотек:

Библиотека Директория
libpq.dll bin директория PostgreSQL
libeay32.dll bin директория OpenSSL
ssleay32.dll bin директория OpenSSL

Вы можете проверить наличие этих библиотек, просмотрев соответствующие директории на вашем компьютере. Если некоторые из библиотек отсутствуют, вам необходимо загрузить и установить их.

После установки недостающих библиотек перезапустите вашу программу на Qt. Проблема «Qpsql driver not loaded» должна быть устранена, и ваша программа должна успешно подключиться к PostgreSQL базе данных.

Настройка окружения и переменных среды

Прежде чем приступать к решению проблемы «Qpsql driver not loaded» на Qt в Windows, необходимо убедиться, что окружение и переменные среды настроены правильно. Это может быть причиной возникновения данной ошибки.

Первым шагом необходимо убедиться, что установлен PostgreSQL и Qt Framework на вашем компьютере. Проверьте версии установленных программ, чтобы удостовериться, что они совместимы друг с другом.

Далее, откройте «Панель управления» в Windows, найдите раздел «Система и безопасность» и выберите «Система». Нажмите на «Дополнительные параметры системы», чтобы открыть «Свойства системы».

В открывшемся окне выберите вкладку «Дополнительно» и нажмите на кнопку «Переменные среды».

Проверьте, есть ли переменная «Path» в разделе «Переменные среды пользователя». Если она уже есть, нажмите на нее, а затем на кнопку «Изменить». Убедитесь, что путь к установленному PostgreSQL и Qt Framework прописан в списке путей.

Если переменная «Path» отсутствует, нажмите на кнопку «Создать». Введите «Path» в поле «Имя переменной» и пропишите путь к установленному PostgreSQL и Qt Framework в поле «Значение переменной». Нажмите «ОК», чтобы сохранить изменения.

После настройки переменной среды «Path» перезапустите компьютер, чтобы изменения вступили в силу.

Эти шаги помогут установить необходимое окружение и переменные среды, что может решить проблему «Qpsql driver not loaded» на Qt Windows.

Переустановка PostgreSQL и Qt

Если вы столкнулись с проблемой «Qpsql driver not loaded» при работе с PostgreSQL и Qt на Windows, возможным решением может быть переустановка компонентов.

Во-первых, рекомендуется проверить версии PostgreSQL и Qt, чтобы убедиться, что они совместимы друг с другом. Если у вас установлена устаревшая версия, рекомендуется обновить ее до последней версии.

Для переустановки PostgreSQL следуйте следующим шагам:

  1. Перейдите на официальный сайт PostgreSQL (https://www.postgresql.org/) и перейдите на страницу загрузки.
  2. Выберите подходящую версию PostgreSQL для вашей операционной системы и архитектуры процессора и загрузите установочный файл.
  3. Запустите установочный файл и следуйте инструкциям мастера установки PostgreSQL.
  4. Убедитесь, что во время установки выбран компонент «PostgreSQL Server» и что установленные параметры соответствуют вашим потребностям. Часто требуется установка компонента «PostgreSQL Development Libraries» для повторной сборки QPSQL драйвера Qt.
  5. По завершении установки PostgreSQL перезагрузите компьютер.

После переустановки PostgreSQL вы можете перейти к переустановке Qt следующим образом:

  1. Перейдите на официальный сайт Qt (https://www.qt.io/) и перейдите на страницу загрузки.
  2. Выберите подходящую версию Qt для вашей операционной системы и загрузите установочный файл.
  3. Запустите установочный файл и следуйте инструкциям мастера установки Qt.
  4. Убедитесь, что во время установки выбраны необходимые компоненты, включая QPSQL драйвер. Если доступны какие-либо дополнительные настройки, связанные с PostgreSQL, установите их соответствующим образом.
  5. По завершении установки Qt перезагрузите компьютер.

После переустановки PostgreSQL и Qt вы должны убедиться, что ваш проект настроен для использования правильных путей к библиотекам PostgreSQL и QPSQL драйвера. Убедитесь, что соответствующие библиотеки присутствуют в вашем проекте и доступны для компиляции.

Если после переустановки ваших компонентов проблема «Qpsql driver not loaded» все еще возникает, обратитесь к сообществу Qt или PostgreSQL для получения дополнительной помощи.

  • Qr код для связи телефона с компьютером windows
  • Qnap finder pro для windows
  • Qnap windows 10 не видит
  • Qnap sync client для windows
  • Qt creator как скачать на windows