Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QT4.6 +PostgreQAL
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
mettamo
Здравствуйте не получается скомпилить драйвер
/usr/include/postgresql - сдесь находятся заголовочники
/home/artem/qtsdk-2010.02/qt/src/plugins/sqldrivers/psql - плагин

пробовал так
qmake-qt4 -o Makefile "INCLUDEPATH+=/usr/include/postgresql" "LIBS+=/usr/include/postgresql/8.4/server/libpq/libpq.h" psql.pro
потом так
qmake-qt4 -o Makefile "INCLUDEPATH+=/usr/include/postgresql/8.4/server/libpql" "LIBS+=/usr/include/postgresql/8.4/server/libpq/libpq.h" psql.pro
много вариантов перепробовал чтоб он видел заголовочники

постоянно выдает
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:14:27: error: nodes/pg_list.h: Нет такого файла или каталога
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:15:26: error: libpq/pqcomm.h: Нет такого файла или каталога
In file included from /usr/include/postgresql/8.4/server/libpq/libpq.h:21:
/usr/include/postgresql/8.4/server/libpq/libpq/libpq-be.h:74:52: error: /usr/include/postgresql/8.4/server/utils: Нет такого файла или каталога
In file included from /usr/include/postgresql/8.4/server/libpq/libpq.h:20:
/usr/include/postgresql/8.4/server/libpq/lib/stringinfo.h:108: error: ‘va_list’ has not been declared
In file included from /usr/include/postgresql/8.4/server/libpq/libpq/libpq-be.h:71,
from /usr/include/postgresql/8.4/server/libpq/libpq.h:21:
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:66: error: expected initializer before ‘*’ token
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:71: warning: ‘read_pg_database_line’ initialized and declared ‘extern’
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:71: error: ‘FILE’ was not declared in this scope
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:71: error: ‘fp’ was not declared in this scope
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:71: error: expected primary-expression before ‘char’
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:71: error: ‘Oid’ was not declared in this scope
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:71: error: ‘dboid’ was not declared in this scope
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:72: error: ‘Oid’ was not declared in this scope
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:72: error: ‘dbtablespace’ was not declared in this scope
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:72: error: ‘TransactionId’ was not declared in this scope
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:72: error: ‘dbfrozenxid’ was not declared in this scope
/usr/include/postgresql/8.4/server/libpq/libpq/hba.h:72: error: initializer expression list treated as compound expression
In file included from /usr/include/postgresql/8.4/server/libpq/libpq/libpq-be.h:72,
from /usr/include/postgresql/8.4/server/libpq/libpq.h:21:
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:44: error: redefinition of ‘struct sockaddr_storage’
/usr/include/bits/socket.h:188: error: previous definition of ‘struct sockaddr_storage’
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:65: error: ‘ACCEPT_TYPE_ARG3’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:100: error: ‘uint32’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:102: error: ‘ProtocolVersion’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:111: error: ‘uint32’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:130: error: ‘ProtocolVersion’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:163: error: ‘uint32’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:179: error: ‘MsgType’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:180: error: ‘uint32’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/pqcomm.h:181: error: ‘uint32’ does not name a type
In file included from /usr/include/postgresql/8.4/server/libpq/libpq.h:21:
/usr/include/postgresql/8.4/server/libpq/libpq/libpq-be.h:110: error: ‘ProtocolVersion’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/libpq-be.h:125: error: ISO C++ forbids declaration of ‘List’ with no type
/usr/include/postgresql/8.4/server/libpq/libpq/libpq-be.h:125: error: expected ‘;’ before ‘*’ token
/usr/include/postgresql/8.4/server/libpq/libpq/libpq-be.h:138: error: ‘TimestampTz’ does not name a type
/usr/include/postgresql/8.4/server/libpq/libpq/libpq-be.h:179: error: ‘ProtocolVersion’ does not name a type
make: *** [libqsqlpsql.so] Ошибка 1

смотрел сами заголовочники такое ощущение что папки перемешаны, что делать?
Litkevich Yuriy
Цитата(mettamo @ 2.6.2010, 15:12) *
LIBS+=/usr/include/postgresql/8.4/server/libpq/libpq.h
в переменную LIBS заносят не заголовочник, а библиотеку
mettamo
а какую библиотеку?

вроде собрал появился файл libqsqlpsql.so

что дальше как начать работу?
mettamo
в файле *.pro дописываю
QTPLUGIN += psql

в исходнике
Q_IMPORT_PLUGIN(psql);

пишет при компиляции collect2: ld returned 1 exit status

g++ -Wl,-O1 -o DATABASE main.o mainwindow.o moc_mainwindow.o -L/usr/lib -lQtGui -lQtCore -lpthread
main.o: In function `global constructors keyed to main':
main.cpp:(.text+0x1): undefined reference to `qt_plugin_instance_psql()'
collect2: ld returned 1 exit status
make: *** [DATABASE] Ошибка 1
Litkevich Yuriy
mettamo, ты что статически Qt собирал?
mettamo
нет
Litkevich Yuriy
тогда всё это добро в файле проекта и main.cpp не нужно, оно только для статической сборки.

При работе с модулем SQL в про файл нужно добавить:
Qt += sql
и всё.

mettamo
QSqlDatabase db;
db.addDatabase("QPSQL", "new");
db.setHostName("localhost");
db.setPort(5432);
db.setDatabaseName("postgres");
db.setUserName("artem");
db.setPassword("qwerty");
bool op=db.open();
if (op)ui->label->setText("true");

я компилю такой код, по идее если подключается то setText("true"); но текст не меняется, как проверить подключилась или нет?
mettamo
db.lastError().text() пишет, что драйвер не загружен
Litkevich Yuriy
mettamo, бинари самой СУБД должны быть доступны через переменную окружения PATH.

Для тестов драйвера лучше всего воспользоваться демкой %QTDIR%/demos/sqlbrowser
mettamo
в демке подключается...
Litkevich Yuriy
Цитата(mettamo @ 3.6.2010, 16:09) *
в демке подключается...
так, ты демку запускаешь из командной строки, из файлового менеджера или как-то ещё?
mettamo
из файлового менеджера

но в принципе демка компилится и работает, а из своего кирпича я подключиться не могу
Litkevich Yuriy
а в демку ты точно такие же данные вводишь, в частности "localhost"?
mettamo
да
mettamo
в чем может быть дело?
Litkevich Yuriy
Похоже из-за этого:
db.addDatabase("QPSQL", "new");

этот метод возвращает соединение, а ты его не используешь.
Посмотри в асистенте, как правильно создавать соединение
mettamo
блин заработало ура!!!! большое спасибо!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2022 IPS, Inc.