Как получить доступ к Postgresql с помощью Qt в Windows

Я разрабатываю приложение, используя QtRuby и PostgreSQL. Я успешно разработал и успешно работаю в Linux. Теперь я хочу запустить то же приложение в Windows. Но мне не удается подключиться к базе данных (postgresql). Я получаю следующие ошибки:

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

person Community    schedule 16.03.2009    source источник


Ответы (4)


Как говорится в сообщении об ошибке, драйвер QPSQL недоступен для взаимодействия Qt с Postgres. Возможно плагин еще не скомпилирован.

Как это руководство показывает, что вам необходимо установить библиотеки разработчика PostgreSQL, а затем вручную собрать подключаемый модуль драйвера Qt. См. инструкции для точных команд.

person MattJ    schedule 16.03.2009
comment
Спасибо за ваш ответ. Я скомпилировал драйвер, и он сгенерировал qsqlpsql4.dll, но все равно получаю ту же ошибку. Что мне теперь делать. - person ; 19.03.2009

  1. Скомпилируйте подключаемый модуль QPSQL, как указано здесь: http://ldc.usb.ve/docs/qt/sql-driver.html#qpsql-for-postgresql-version-7-3-and-above
  2. Добавьте путь к корзине PostgreSQL в переменную среды PATH.
person Marek Miettinen    schedule 26.01.2012

Postgresql с использованием QT в Windows: Как скомпилировать драйвер QPSQL — MinGw — Win7

1) проверьте каталог установки на моем компьютере:

PostgreSQL (32 bit)    C:\PSQL32\bin
Qt (32 bit)            C:\QT\4.8.0\bin
MingW32                C:\QT\qtcreator-2.4.0\mingw\bin      

2) добавьте эти 3 каталога в системный PATH

3) Скачать mingw-utils и установить в C:\Qt\4.8.0\bin (нужна утилита REIMP.exe)

4) Преобразовать libpq.lib в удобный для mingw32 формат:

компакт-диск C:\PSQL32\lib

REIMP -d libpq.lib

Откройте libpq.def и удалите ВСЕ "_" в начале определений.

dlltool --input-def libpq.def --output-lib libpq.a --dllname libpq.dll

5) Скомпилируйте:

CD C:\Qt\4.8.0\src\plugins\sqldrivers\psql

qmake -o Makefile "INCLUDEPATH+=C:\PSQL32\include" "LIBS+=C:\PSQL32\lib\libpq.a" psql.pro

mingw32-сделать отладку

mingw32-сделать релиз

10) скопировать dll:

libqsqlpsqld4.a   qsqlpsqld4.dll    (debug)  

libqsqlpsql4.a   qsqlpsql4.dll      (release)

в каталоге:

C:\Qt\4.8.0\plugins\sqldrivers

НОВАЯ проблема для QT версии 5.01

существует несколько определений struct timespec

в файле pthread.h PostgreSQL (C:\PSQL32\include\pthread.h)

заменять:

#ifndef HAVE_STRUCT_TIMESPEC

с:

#if ((!defined(_TIMESPEC_DEFINED)) && (!defined(HAVE_STRUCT_TIMESPEC)))


Сделанный :-)

Фауст

person Fausto Tomei    schedule 22.03.2013
comment
Привет, я знаю, что прошло некоторое время с тех пор, как этот пост был. Но я пытаюсь сделать эту работу безуспешно. В моем случае он не загружает драйвер, а отображает его как доступный. Также у меня нет кода для компиляции плагинов. Я установил QT Opensource, попытался изменить его и загрузить коды, но коды плагинов не предоставляются через установщик. Что я должен делать? - person RafaelTSCS; 22.08.2014

Большой! Это сделано! Однако есть несколько советов, на которые стоит обратить внимание: 1. Mingw-utils, 0.4-1 не будет работать в Windows 7, мы должны использовать 0.3. 2. В каталоге драйвера PSQL есть файл psql.json, не удаляйте его.

person user2476916    schedule 12.06.2013