Название: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драйвер QPSQL) Отправлено: sindbad07 от Сентябрь 28, 2010, 15:06 Поставил новую Qt SDK 4.7, PostgreSQL 9.0, собрал драйвер для него (windows-vista-32bit), все пути прописал, даже подсовывал все либы к экзешнику, но программа драйвер ни в какую не видит, пишет мне:
QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC Демка SQL Browser тоже не показывает драйвер postgres. Подскажите пожалуйста в чем может быть дело, кто-то уже наверно перешел на новую версию postgres'a. Спасибо за внимание. P.S. Перезагружать винду пробовал, все равно не видит... Название: Re: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драйвер QPSQL) Отправлено: crossly от Сентябрь 28, 2010, 15:37 посмотри чего не хватает драйверу.... с помощью dependencywalker к примеру
Название: Re: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драйвер QPSQL) Отправлено: sindbad07 от Сентябрь 28, 2010, 15:43 Короче запустил кое-как, скопировав dll-ки из папки postgres\bin в свой проект
В программе запросы работают, но не работают модели (не выводят данные), при этом отладчик пишет: This version of PostgreSQL is not supported and may not work. QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work. Приехали или есть решение? Название: Re: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драйвер QPSQL) Отправлено: sindbad07 от Сентябрь 28, 2010, 16:50 Короче справился с проблемой - подправил исходник драйвера, а точнее функцию получения версии (файл c:\Qt\2010.05\qt\src\sql\drivers\psql\qsql_psql.cpp), потом перекомпильнул и все заработало :D
static QPSQLDriver::Protocol getPSQLVersion(PGconn* connection) { QPSQLDriver::Protocol serverVersion = QPSQLDriver::Version6; PGresult* result = PQexec(connection, "select version()"); int status = PQresultStatus(result); if (status == PGRES_COMMAND_OK || status == PGRES_TUPLES_OK) { QString val = QString::fromAscii(PQgetvalue(result, 0, 0)); QRegExp rx(QLatin1String("(\\d+)\\.(\\d+)")); rx.setMinimal(true); // enforce non-greedy RegExp if (rx.indexIn(val) != -1) { int vMaj = rx.cap(1).toInt(); int vMin = rx.cap(2).toInt(); switch (vMaj) { case 7: switch (vMin) { case 0: serverVersion = QPSQLDriver::Version7; break; case 1: case 2: serverVersion = QPSQLDriver::Version71; break; default: serverVersion = QPSQLDriver::Version73; break; } break; case 8: switch (vMin) { case 0: serverVersion = QPSQLDriver::Version8; break; case 1: serverVersion = QPSQLDriver::Version81; break; case 2: default: serverVersion = QPSQLDriver::Version82; break; } break; default: break; } ////////////////////////////////////////////////////////////////// //добавлено (для новой версии 9.0) if ( vMaj == 9 ) serverVersion = QPSQLDriver::Version82; ///////////////////////////////////////////////////////////////// } } PQclear(result); if (serverVersion < QPSQLDriver::Version71) qWarning("This version of PostgreSQL is not supported and may not work."); return serverVersion; } Название: Re: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драйвер QPSQL) Отправлено: Marat(Qt) от Сентябрь 28, 2010, 18:05 Короче запустил кое-как, скопировав dll-ки из папки postgres\bin в свой проект Оттуда вроде только libpq.dll надо.Название: Re: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драйвер QPSQL) Отправлено: Пантер от Сентябрь 28, 2010, 19:27 Если самосборное, то да. А в обычной поставке там много dll'ок нужно.
Название: Re: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драйвер QPSQL) Отправлено: iRQSX от Сентябрь 29, 2010, 01:50 Короче запустил кое-как, скопировав dll-ки из папки postgres\bin в свой проект Посмотри мой пост http://www.prog.org.ru/index.php?topic=14949.msg98875#msg98875 Надо прописать в Path пути тогда копировать не надо. Есть libpq "самосборная" могу выложить Название: Re: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драl Отправлено: kolob от Июнь 20, 2011, 16:56 Собрал драйвер Postgres.
В директории sqldrivers такие файлы: Цитировать libqsqlite4.a При попытке подключится выдает ошибку:libqsqlited4.a libqsqlpsql4.a libqsqlpsqld4.a qsqlite4.dll qsqlited4.dll qsqlpsql4.dll qsqlpsqld4.dll Цитировать QSqlDatabase: QPSQL driver not loaded Пробовал скопировать dll из postgres/bin в корень проекта, но ошибка остается.QSqlDatabase: available drivers: QSQLITE QSqlError(-1, "Driver not loaded", "Driver not loaded") Помогите разобраться. Скопировал dll из PostgreSQL/bin в проект, выдает тоже самое Цитировать This version of PostgreSQL is not supported and may not work. Спасибо sindbad07. Подредактировал исходник, вроде подключилось, без ошибок! Ответьте на такой вопрос: dll теперь нужно постоянно таскать с exe-ком? Название: Re: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драйвер QPSQL) Отправлено: Пантер от Июнь 27, 2011, 09:19 Да. Все dll по зависимостям.
Название: Re: Не запускается проект на Qt 4.7 + Postgres 9.0 (не видит драйвер QPSQL) Отправлено: lea-id от Январь 17, 2012, 08:11 решение проблемы в архиве, работает с PostgreSQL 9.1 и Qt 4.7.0 (Qt SDK 2010.05)
думаю, аналогично можно будет копилить и другие драйвера |