Russian Qt Forum

Qt => Базы данных => Тема начата: Pupil от Ноябрь 03, 2010, 16:08



Название: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: Pupil от Ноябрь 03, 2010, 16:08
Компоненты ПО:
   -операционная система МСВС (на основе Red Hat);
   -СУБД "Линтер";
   -библиотека Qt 4.5.3 и Qt-Creator 1.2.1


Действовал по книге Юрия Земскова "Qt 4 на примерах" (как я понимаю, она говорит примерно то же, что и "официальные" документы).

При установке динамической библиотеки вводил:
   # ./configure -prefix/usr/lib/qt-4.5.3_dynamic -plugin-sql-psql -I /usr/include/pgsql -L /usr/lib/pgsql

При установке статической библиотеки вводил:
   # ./configure -static -prefix /usr/lib/qt-4.5.3_static -release - nomake demos -nomake examples nomake tools (...) -qt-sql-psql -I -L


Установка прошла без ошибок.


После пытаюсь выполнить сборку QPSQL-плагина. Захожу в /pro/qt-all-opensource-src-4.5.3/src/plugins/sqldrivers/psql,выполняю:

qmake -o Makefile "INCLUDEPATH+=/usr/include/pgsql" "LIBS+=-L/usr/lib -lpq" psql.pro

Консоль выдаёт:

(...)/ .qmake.cache.2: Unknown replace function: quote
   (...)/ .qmake.cache.3: Unknown replace function: quote
   Failure to read QMAKESPEC conf file /mkspecss/linux-g++/qmake.conf
   Error processing project file (...)/psql.pro

Листинг:
Код:
файл .pro:
SOURCES += main.cpp
QT += sql

файл main.cpp

#include <QtSql>

int main(int argc, char** argv) {

QCoreApplication app(argc, argv);

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setDatabaseName("...");

db.setUserName("...");
db.setHostName("localhost");
db.setPassword("...")

if (!db.open()) {
qDebug() << db.lastError();
}
else {db.close(); qDebug << "OK";}
return app.exec();
}


Результат:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE
QSqlError(-1,"Driver not loaded","Driver not loaded"), из программы возвратились с кодом 0.






Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: crossly от Ноябрь 03, 2010, 16:13
Цитировать
При установке динамической библиотеки вводил:
   # ./configure -prefix/usr/lib/qt-4.5.3_dynamic -plugin-sql-psql -I /usr/include/pgsql -L /usr/lib/pgsql
в данном случае ( если сборка прошла без ошибок)... плагин должен быть еже собран... собирать его еще раз нет необходимости...
Цитировать
При установке статической библиотеки вводил:
   # ./configure -static -prefix /usr/lib/qt-4.5.3_static -release - nomake demos -nomake examples nomake tools (...) -qt-sql-psql -I -L
опять же если сборка прошла без ошибок то поддержка psql должна быть вкомпилирована в qtsql ... к тому же статическая сборка не поддерживает плагинов...


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: Пантер от Ноябрь 03, 2010, 16:28
./configure -prefix/usr/lib/qt-4.5.3_dynamic -qt-sql-psql -I /usr/include/pgsql -L /usr/lib/pgsql
Так лучше.


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: Pupil от Ноябрь 03, 2010, 19:33
Спасибо! После опробования обязательно сообщу результат.


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: crossly от Ноябрь 03, 2010, 21:41
./configure -prefix/usr/lib/qt-4.5.3_dynamic -qt-sql-psql -I /usr/include/pgsql -L /usr/lib/pgsql
Так лучше.
не думаю что так будет лучше.... QtSql в данном случае будет тянуть за собой dll psql .... я бы в данном случае наверное сделал бы выбор в сторону -plugin-sql-psql


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: andrew.k от Ноябрь 08, 2010, 18:30
Цитировать
qmake -o Makefile "INCLUDEPATH+=/usr/include/pgsql" "LIBS+=-L/usr/lib -lpq" psql.pro

Консоль выдаёт:

(...)/ .qmake.cache.2: Unknown replace function: quote
   (...)/ .qmake.cache.3: Unknown replace function: quote
   Failure to read QMAKESPEC conf file /mkspecss/linux-g++/qmake.conf
   Error processing project file (...)/psql.pro
qmake4 вместо qmake

Как удалось установить creator не подскажешь?


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: crossly от Ноябрь 08, 2010, 18:38
учитывая то что человек собирал Qt из исходников... то все же именно qmake.... вопрос в том прописан ли к нему путь в PATH...


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: andrew.k от Ноябрь 08, 2010, 18:50
учитывая то что человек собирал Qt из исходников... то все же именно qmake.... вопрос в том прописан ли к нему путь в PATH...

ну да по сути. в МСВС qmake4 это симлинк на 4 кумэйк.
а QTDIR=/usr/lib/qt-3.3.3 по умолчанию


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: Pupil от Ноябрь 09, 2010, 17:09
Всем искреннее спасибо! Вопрос решён. Пантер -респект! Qt устанавливался по одной из тем данного портала - порядок действий на одну страничку.


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: Pupil от Ноябрь 09, 2010, 17:20
andrew.k, http://www.prog.org.ru/topic_12303_0.html (http://www.prog.org.ru/topic_12303_0.html)


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: andrew.k от Ноябрь 09, 2010, 18:58
andrew.k, http://www.prog.org.ru/topic_12303_0.html (http://www.prog.org.ru/topic_12303_0.html)
да уже ознакамливаюсь. Просто я думал, что можно установить без установки кути 4.5.


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: andrew.k от Ноябрь 11, 2010, 17:37
./configure -prefix/usr/lib/qt-4.5.3_dynamic -qt-sql-psql -I /usr/include/pgsql -L /usr/lib/pgsql
Так лучше.
не думаю что так будет лучше.... QtSql в данном случае будет тянуть за собой dll psql .... я бы в данном случае наверное сделал бы выбор в сторону -plugin-sql-psql
Расскажи подробнее. чем плохо? чем хорошо? что значит будет тянуть dll psql.
Значит ли это, что даже если я не буду испльзовать в программе psql (а например другой движок) dll все равно прилинкуется?


Название: Re: Не устанавливается драйвер SQL (PosgreSQL) и отсутствует доступ к базе данных
Отправлено: crossly от Ноябрь 11, 2010, 17:57
Цитировать
Значит ли это, что даже если я не буду испльзовать в программе psql (а например другой движок) dll все равно прилинкуется?
именно это и значит... QtSql всегда будет тянуть за собой клиентскую библиотеку postgres.... т.е. если вам нужен к примеру только sqlite вам все равно придется таскать и постгрес...