Russian Qt Forum
Апрель 18, 2024, 13:02
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
[РЕШЕНО] linux QODBC driver enable
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [РЕШЕНО] linux QODBC driver enable (Прочитано 14251 раз)
deMax
Хакер
Offline
Сообщений: 600
[РЕШЕНО] linux QODBC driver enable
«
:
Май 03, 2017, 08:25 »
Debian 8.7, установил unixodbc, unixodbc-bin, unixodbc-dev. Qt 5.8 установил с исходниками. Не могу собрать QODBC.
cd ~/Qt5.8.0/5.8/Src/qtbase/src/plugins/sqldrivers/odbc
~/Qt5.8.0/5.8/gcc_64/bin/qmake "INCLUDEPATH+=/usr/include" "LIBS+=-L/usr/lib/x86_64-linux-gnu -lodbc" odbc.pro
Выдает Project ERROR: Library 'odbc' is not defined.
unixodbc-dev установил файлы:
/usr/include/autotest.h
/usr/include/odbcinst.h
/usr/include/odbcinstext.h
/usr/include/sql.h
/usr/include/sqlext.h
/usr/include/sqltypes.h
/usr/include/sqlucode.h
/usr/include/unixodbc_conf.h
/usr/include/uodbc_extras.h
/usr/include/uodbc_stats.h
/usr/lib/x86_64-linux-gnu/libodbc.a
/usr/lib/x86_64-linux-gnu/libodbc.so
/usr/lib/x86_64-linux-gnu/libodbccr.a
/usr/lib/x86_64-linux-gnu/libodbccr.so
/usr/lib/x86_64-linux-gnu/libodbcinst.a
/usr/lib/x86_64-linux-gnu/libodbcinst.so
/usr/share/doc/unixodbc-dev/NEWS.Debian.gz
/usr/share/doc/unixodbc-dev/changelog.Debian.gz
/usr/share/doc/unixodbc-dev/changelog.gz
/usr/share/doc/unixodbc-dev/copyright
«
Последнее редактирование: Май 25, 2017, 08:37 от deMax
»
Записан
titan83
Гость
Re: linux QODBC driver enable
«
Ответ #1 :
Май 03, 2017, 16:08 »
Была аналогичная проблема на Ubuntu 16 + Qt5.8. Сейчас все работает)
Пробуй в odbc.pro закомментить эту строку
QMAKE_USE += odbc (было)
#QMAKE_USE += odbc (стало)
еще, на всякий случай, посмотри, где у тебя qmake лежит: which qmake, а то может так оказаться, что не тот qmake используется.
«
Последнее редактирование: Май 03, 2017, 16:58 от titan83
»
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: linux QODBC driver enable
«
Ответ #2 :
Май 03, 2017, 17:14 »
Я бы ещё перепроверил, не врёт ли установщик и в /usr/lib/x86_64-linux-gnu действительно есть libodbc.so
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: linux QODBC driver enable
«
Ответ #3 :
Май 04, 2017, 07:56 »
Собрал unixodbc из исходников(не стал брать из репозитория debaian, почему то с ними не собиралось даже с закоментированной QMAKE_USE).
И закоментировал QMAKE_USE. Собралось. Скопировал Src/qtbase/plugins/sqldrivers/libqsqlodbc.so в Qt5.8.0/5.8/gcc_64/plugins/sqldrivers (в ней лежали libqsqlite.so, libqsqlmysql.so, libqsqlodbc.so).
QSqlDatabase::drivers() выводит только QSQLITE
Записан
titan83
Гость
Re: linux QODBC driver enable
«
Ответ #4 :
Май 04, 2017, 08:19 »
Чудес не бывает.
Вывод QCoreApplication::libraryPaths() и ldd libqsqlodbc.so в студию.
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: linux QODBC driver enable
«
Ответ #5 :
Май 04, 2017, 08:47 »
Спасибо. С путями запутался....
Код:
db = QSqlDatabase::addDatabase("QODBC");
#ifdef WIN32
db.setDatabaseName("DRIVER={SQL Server};Server=10.10.1.1;DATABASE=Obmen");
#else
db.setDatabaseName("DRIVER={FreeTDS};Server=10.10.1.1;DATABASE=Obmen");
#endif
db.setUserName("***");
db.setPassword("***");
if(!db.isValid()) qDebug()<< "ODBC driver don't loaded.";
db.open();
if(db.isOpenError()) qDebug()<<db.lastError().text();
выводит под дебианом(под виндой работает): Data source name not found, and no default driver specified QODBC3: Unable to connect
«
Последнее редактирование: Май 04, 2017, 12:39 от deMax
»
Записан
titan83
Гость
Re: linux QODBC driver enable
«
Ответ #6 :
Май 04, 2017, 13:12 »
Под линуксом надо настраивать соединения.
Два файла: freetds.conf и odbc.ini (у меня оба в /etc, но я сам собирал и odbc, и freetds).
freetds.conf
Код:
[global]
connect timeout = 10
#debug flags = 0xffff
#dump file = /tmp/freetds.log
text size = 64512
timeout = 10
[LIMSServer]
host = 192.168.0.177
tds version = 8.0
clientcharset = UTF-8
odbc.ini
Код:
[LIMSDatabase]
;Database = CL_CO_ANDINA
Database = OLDEMO
Driver = FreeTDS
Port = 1433
Servername = LIMSServer
Также проверь odbcinst.ini
Код:
[FreeTDS]
Description = TDS Driver
Driver = /usr/lib/x86_64-linux-gnu/freetds/lib/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
CPTimeout =
CPReuse =
Ну и в коде не надо твоей строки подключения:
Код:
bool QWshDatabase::openDatabase(const QString &username, const QString &password, const QString &timeout)
{
if (_db.isOpen() == false) {
_db.setDatabaseName("LIMSDatabase");
_db.setUserName(username);
_db.setPassword(password);
if (timeout.isEmpty() == true)
_db.setConnectOptions("SQL_ATTR_CONNECTION_TIMEOUT=3");
else
_db.setConnectOptions(QString("SQL_ATTR_CONNECTION_TIMEOUT=%Timeout%").replace("%Timeout%", QString::number(timeout.toInt() / 3)));
emit connecting();
if (_db.open() == false) {
setProperty("LastError", _db.lastError().text());
return false;
}
}
return true;
}
Должно работать.
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: linux QODBC driver enable
«
Ответ #7 :
Май 25, 2017, 08:37 »
titan83
, спасибо. Только хотелось бы чтобы подключения к нескольким базам были и пользователь в настройках программы задает ip, login, baseName.
Ладно под линуксом у меня только для отладки сборка.
Записан
titan83
Гость
Re: linux QODBC driver enable
«
Ответ #8 :
Май 25, 2017, 17:05 »
Цитата: deMax от Май 25, 2017, 08:37
titan83
, спасибо. Только хотелось бы чтобы подключения к нескольким базам были и пользователь в настройках программы задает ip, login, baseName.
Ладно под линуксом у меня только для отладки сборка.
Хм, ну тут два пути:
1. Переписывать значения в freetds.conf и odbc.ini. Так у меня сделано сейчас.
2. Использовать строку подключения. Я не пробовал, но, возможно, будет работать. Если ты проверить и тут отпишешься, то будет просто замечательно.
Что-то вроде, DRIVER={TDS Driver};Server=10.10.1.1;DATABASE=Obmen;Port=1433
Кстати, у меня под виндовс не работала строка подключения, пока не указал порт.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...