Russian Qt Forum

Qt => Базы данных => Тема начата: QuAzI от Декабрь 04, 2011, 23:25



Название: Firebird 2.5 unavailable database
Отправлено: QuAzI от Декабрь 04, 2011, 23:25
Qt 2010.5, скачанный свежий инсталяк Firebird 2.5.1.
На удивление легко и без мата собрался плагин, но отказывается работать.
Код:
if (!db.open()
{
   qDebug() << db.databaseName() << db.userName() << db.password() << db.lastError();
}
Вываливает
Код:
"127.0.0.1:C:\Progra~1\Firebird\Firebird_2_5\examples\empbuild\EMPLOYEE.FDB" "SYSDBA" "masterkey" QSqlError(-904, "Error opening database", "unavailable database")
Файл существует, через консоль isql подключаюсь к нему на ура. Перенёс в корень диска - та же песня.
В директории с релизом лежат нужные fbclient.dll (взят из установленного Firebird, оттуда же тянулись инклюды для сборки плагина) и msvcr80.dll (в зависимостях у fbclient.dll), плагин в списке QSqlDatabase::drivers виден, зависимости все вроде учтены.
Чего ему ещё не хватает для счастья?  Может кто заведомо рабочим поделится?


Название: Re: Firebird 2.5 unavailable database
Отправлено: QuAzI от Декабрь 07, 2011, 12:01
Собрал драйвер к Firebird 2.1 - к базе подключается, выборка работает. Есть какая-то возможность стандартными методами создать базу данных из QIBASE, без использования особо страшных хаков и сторонних драйверов к FB, напичканных хаками и заточенных под отдельные версии?


Название: Re: Firebird 2.5 unavailable database
Отправлено: joker от Декабрь 09, 2011, 10:13
Ну в теории CREATE DATABASE должен помочь... но напрямую из Qt его вроде не дергнешь...
Может сделать скриптец создания базы и скормить isql?

ЗЫ Обычно не встречается софт которому нужно создавать свои базы - нужна уже готовая база где будет как минимум некий набор таблиц-справочников, так что может создание БД - вовсе и не надо?

ЗЫЫ С птичкой лучше работать с QFIREBIRD (http://code.google.com/p/qtfirebirdibppsqldriver/) - по крайней мере работают параметры для запросов да и быстрее он раз в несколько (на медленном соединении 10 минут вместо 3х часов QIBASE)


Название: Re: Firebird 2.5 unavailable database
Отправлено: QuAzI от Декабрь 09, 2011, 11:19
QFIREBIRD там выложен без отладочной библы, собирать было лениво, разберусь до конца с общими вопросами, займусь той базой.
isql с собой тягать не вариант. Нужно всё в рамках SQL-подключения.
Создавать базу нужно из приложения, чтобы максимально упростить разворачивание приложения. Для PostgreSQL и MySQL всё красиво в плане "создал юзверя, создал для него базу, создал таблички - радуйся жизни". А тут затык. Народ предлагает дёргать или жутко внутренний API (которого во первых описание ещё поискать нормально, во вторых непонятно как на разных версиях будет себя вести, в третьих полная фигня в плане переносимости или подмены плагина-драйвера БД с QIBASE на QFIREBIRD). Ну и вообще это не есть правильно, дёргать что-то мимо основного нормального SQL для сервера SQL.


Название: Re: Firebird 2.5 unavailable database
Отправлено: vlad-mal от Декабрь 10, 2011, 23:31
Чтобы по-быстрому скрипт выполнить, я с собой библиотечку IBEScript.dll (вместе с ibExpert идет) таскаю.
Там что хочешь можно делать.


Название: Re: Firebird 2.5 unavailable database
Отправлено: QuAzI от Декабрь 11, 2011, 01:08
Вариант интересный, но совершенно не кроссплатформенный


Название: Re: Firebird 2.5 unavailable database
Отправлено: eJinn от Май 13, 2013, 14:13
Есть какая-то возможность стандартными методами создать базу данных из QIBASE, без использования особо страшных хаков и сторонних драйверов к FB, напичканных хаками и заточенных под отдельные версии?
Создай пустую базу с нужными таблицами и пр. заранее, положи ее рядом со своей прогой. Вместо создания базы копируй эту заготовку на нужное место и заполняй из своей проги нужные таблички.