Блог >> Qt connection to PostgreSQL

Столкнулся с проблемой при подключении к PostgreSQL, и был немного удивлен, увиденным:

QSqlDatabase: QPSQL driver not loaded

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

Буду краток, из коробки дрова сами не заработают. Нужно ставить базу, причем, желательно со следующего сайта https://www.enterprisedb.com/downloads/postgres-postgresql-downloads


Эта база данных помимо прочего содержит необходимые библиотеки для самостоятельной компиляции драйверов.

Тут нужно учесть, если у Вас Windows и в качестве компилятора используется MinGW, то качать надо 32 битную версию, потому что компилятор тоже 32 битный.

Так же после установки необходимо добавить в переменную окружения PATH, путь до базы данных. Т.к. я установил в PostgreSQL в D:/PGSQL, мне нужно было прописать путь до папки бинарников, т.е. D:/PGSQL/bin

Если среда разработки была запущена, желательно её перезапустить. Если после этого соединение с PostgreSQL не работает, то для решения есть 2 пути:

1.

Копирование файлов в папку Qt, а именно: из папки D:\GSQL\bin\ копируем файлы libeay32.dll, libintl-8.dll, libpq.dll, ssleay32.dll в папку (в моем случае) D:\QT\5.9.1\mingw53_32\bin\

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

2.

Для того чтобы скомпилировать драйвера, необходимо иметь установленные исходники Qt. При установке Qt, дает возможность выбрать установку исходных кодов, после чего помимо самой среды появится папка Src, в моем случае D:\QT\5.9.1\Src.

После чего нам необходимо открыть файл Qt 5.9.1 for Desktop, его можно найти в Пуск - Установленные программы - Qt, либо просто начать вбивать Qt и проводник предложит выбор. Далее согласно официальной документации нам необходимо перейти в папку c исходниками драйверов нужной базы

cd D:\QT\5.9.1\Src\qtbase\src\plugins\sqldrivers\psql

Выполнить предварительную сборку проекта, указав путь до папки include нашей базы и файла libpq.lib

qmake "INCLUDEPATH+=d:\PGSQL\include" "LIBS+=d:\PGSQL\lib\libpq.lib" psql.pro

Ну и выполнить сборку

mingw32-make

Если появятся ошибки попробуйте закоментировать строку вызывающую ошибку, в моем случае все прокатило.

В результате должны появиться 4 файла libqsqlpsql.a, libqsqlpsqld.a, qsqlpsql.dll, qsqlpsqld.dll в папке D:\QT\5.9.1\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers\ и скопировать файлы qsqlpsql.dll, qsqlpsqld.dll в папку D:\QT\5.9.1\mingw53_32\plugins\sqldrivers\ Заменив старые драйвера.



Категории

GIT сервер *nix html Linux php xampp SVN MySQL Настройка разработка Отладка Мысли mobile FirefoxOS тесты ЧПУ TinyMCE Киров блоггинг Вирусы Ubuntu Операционные системы JavaScript Android Среда разработки книги tips and tricks C# MSSQL С++ Qt PostgreSQL