Название: Error opening database [Firebird] Отправлено: fear от Март 30, 2008, 02:33 Собрал ibase драйвер с заголовками и либами firebird, с помощью IBExpert создал тестовую базу. При подключении - следующая ошибка: "Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements Error opening database". Что не так?
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QTextStream out(stdout); QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE", "TestMyDB"); db.setHostName("localhost"); db.setDatabaseName("testdb"); //db.setDatabaseName("D:/Temp/test.fdb"); db.setUserName("TEST"); db.setPassword("ABC"); if(!db.open()) { QString error = db.lastError().text(); out<<"db open error: "<<error<<endl; } else out<<"db connection..."; return 0; } _____________________________________________ Qt 4.3.1, VS2005, Vista, Firebird-2.0.1.12855-1-Win32 Название: Re: Error opening database [Firebird] Отправлено: Tonal от Март 30, 2008, 12:36 TestDB в алиасах прописал?
Путь верный? Если вместо TestDB указать полный путь к базе что получается? Название: Re: Error opening database [Firebird] Отправлено: fear от Март 30, 2008, 12:48 TestDB в алиасах прописал? testdb в алиасах естьПуть верный? Если вместо TestDB указать полный путь к базе что получается? путь верный, пробовал подключаться и с помощью указания пути и с помощью алиаса, эффект один и тод же Название: Re: Error opening database [Firebird] Отправлено: fear от Март 30, 2008, 13:10 Попытался создать новую БД IBExpert`ом указав ему не стандартную библиотеку gds32.dll, а собранную мной Qt\plugins\sqldrivers\qsqlibase4.dll. Получил в ответ ошибки:
"R6034 An aplication has made an attempt to load C runtime library incorrectly" "Client Library is missing or invalid" Собирал библиотеку следующим образом: 1) Заменил содержимое '\Qt\src\plugins\sqldrivers\ibase\ibase.pro' на ------------------------------------------------------------------------------------ TARGET = qsqlibase HEADERS = ../../../sql/drivers/ibase/qsql_ibase.h SOURCES = main.cpp \ ../../../sql/drivers/ibase/qsql_ibase.cpp unix:!contains( LIBS, .*gds.* ):!contains( LIBS, .*libfb.* ):LIBS *= -lgds win32:!contains( LIBS, .*gds.* ):!contains( LIBS, .*fbclient.* ) { INCLUDEPATH += D:\Programs\Firebird\Firebird_2_0\include LIBS += -LD:\Programs\Firebird\Firebird_2_0\lib !win32-borland:LIBS *= -lfbclient_ms win32-borland:LIBS += fbclient_bor.lib } include(../qsqldriverbase.pri) ------------------------------------------------------------------------------------ 2) Собрал проект cd \Qt\src\plugins\sqldrivers\ibase qmake ibase.pro && nmake Название: Re: Error opening database [Firebird] Отправлено: Пантер от Март 30, 2008, 16:15 Попробуй логин и пароль:
SYSDBA MASTERKEY Название: Re: Error opening database [Firebird] Отправлено: fear от Март 30, 2008, 17:02 Попробуй логин и пароль: Пробовал, результат тод жеSYSDBA MASTERKEY Название: Re: Error opening database [Firebird] Отправлено: Пантер от Март 30, 2008, 17:10 1. Сделай не
QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE", "TestMyDB"), а QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE") 2. Попробуй приконектиться из демосовского примера. Название: Re: Error opening database [Firebird] Отправлено: fear от Март 30, 2008, 17:13 1. Сделай не так тоже пробовал - в обоих случаях та же самая ошибкаQSqlDatabase db = QSqlDatabase::addDatabase("QIBASE", "TestMyDB"), а QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE") 2. Попробуй приконектиться из демосовского примера. Название: Re: Error opening database [Firebird] Отправлено: Пантер от Март 30, 2008, 17:39 :(
1. Проверь, есть ли fbclient.dll в области видимости. 2. Попробуй пересобрать кутю и сделать sql драйвера не плагинами, а статиком. Название: Re: Error opening database [Firebird] Отправлено: fear от Март 30, 2008, 17:50 1. Проверь, есть ли fbclient.dll в области видимости. занёс путь к Firebird`овскому bin`у в PATH - эффект нулевой2. Попробуй пересобрать кутю и сделать sql драйвера не плагинами, а статиком. счас попробую qt пересобратькстати, после сборки интегратор запускать надо или можно подменить qt`шную директорию новой сборкой? Название: Re: Error opening database [Firebird] Отправлено: Tonal от Март 30, 2008, 18:41 Ну, совать IBExpert-у Qt-ёвый драйвер - это конечно сильно. :D
Попробуй стандартный демос sqlbrowser. У меня он подключается и по алиасу и по путям. Если не подключится - запусти под Depend-ом или отладчиком, и смотри - мож каких длл-ек ему не хватает. Хотя такое сообщение ещё выдаётся если сервер не работает. Пересобирать Qt в статик по моему не стоит. Название: Re: Error opening database [Firebird] Отправлено: Пантер от Март 30, 2008, 19:00 1. Не кутю в статик, а sql в статик (-qt-sql-ibase).
2. fear уже писал, что sqlbrowser пробовал и не помогло. 3. А вот на счет незапущенного сервера - это может быть... Хотя IBExpert ведь коннектится.... Название: Re: Error opening database [Firebird] Отправлено: fear от Март 30, 2008, 20:09 Qt собрать не получилось, пробовал конфигурить так:
Цитировать -debug-and-release -qt-sql-ibase -I D:\Programs\Firebird\Firebird_2_0\include -L D:\Programs\Firebird\Firebird_2_0\lib -l fbclient_ms -qt-style-windowsvista Сервер запущен, соответствующие службы весят. На всякий случай убедился, создав новую базу средствами поставляемого с ним термина - isql, база создалась. IBExpert походу пользует firebird embedded, т.к. новую базу он увидел только после того как ему был указан путь к ней. Qt`ный sql browser отреагировал на попытку подключения к новой базе как и раньше - с ошибкой. Название: Re: Error opening database [Firebird] Отправлено: Пантер от Март 30, 2008, 20:37 В файле Qt/4.3.3/src/sql/drivers/drivers.pri нужно прописать:
Код: contains(sql-drivers, ibase) {^ Код: TARGET = qsqlibase Слово "путь" заменяешь на расположение огнептица. Если что-то не понятно - в поиск, вопрос неоднократно поднимался и был ответ, который я и предоставил (по памяти). Только это решение для MinGW, для студии может отличаться... Название: Re: Error opening database [Firebird] Отправлено: Вячеслав от Март 30, 2008, 22:02 Qt собрать не получилось, пробовал конфигурить так: IBE юзает то,что ему сказано - по умолчанию gsd32.dll .Инсталятор птица создает копию fbclient.dll с этим именем (для совместимости) в widdows/system32. размер fbembed несколько больше чем fbclient.dll (который лежит вместе с птицем) так-что разберись _какой_ драйвер пытается грузить QT ( Если юзаешь студию - смотри при загрузке какой модуль она цепляет).У меня были грабли с qt-шным плагином когда сдуру поменял птица на 2.1 на ходу(не пересобирая плагин - хотя почему -хз) :( ... А так - пути для инклюдов и либы поставил и nmake в зубы ...Цитировать -debug-and-release -qt-sql-ibase -I D:\Programs\Firebird\Firebird_2_0\include -L D:\Programs\Firebird\Firebird_2_0\lib -l fbclient_ms -qt-style-windowsvista Сервер запущен, соответствующие службы весят. На всякий случай убедился, создав новую базу средствами поставляемого с ним термина - isql, база создалась. IBExpert походу пользует firebird embedded, т.к. новую базу он увидел только после того как ему был указан путь к ней. Qt`ный sql browser отреагировал на попытку подключения к новой базе как и раньше - с ошибкой. Как уже сказали - тренируйся на sqlBrowser'e - он должен показывать QIBASE драйвер ... Название: Re: Error opening database [Firebird] Отправлено: fear от Март 30, 2008, 22:06 Как уже сказали - тренируйся на sqlBrowser'e - он должен показывать QIBASE драйвер ... Так он и показывает его.Повторил действия под Windows XP x32 - всё гладко. Значит проблема с совместимостью с Vista x64. Попробую пересобрать qt с статическим ibase драйвером, либо придётсясидеть под VMware :) Название: Re: Error opening database [Firebird] Отправлено: Вячеслав от Март 30, 2008, 23:09 Vista, Firebird-2.0.1.12855-1-Win32
Таки может птица 64 битного поставить для начала ? Название: Re: Error opening database [Firebird] Отправлено: fear от Март 31, 2008, 02:00 Vista, Firebird-2.0.1.12855-1-Win32 Таки может птица 64 битного поставить для начала ? Если верить офф сайту, под win такого не существует... Название: Re: Error opening database [Firebird] Отправлено: Tonal от Март 31, 2008, 06:55 Добейся чтобы IBExpert по алиасу подключаелся со стандартным клиентом.
Потом можно и Qt мучать. :-) Название: Re: Error opening database [Firebird] Отправлено: Вячеслав от Март 31, 2008, 09:52 Vista, Firebird-2.0.1.12855-1-Win32 Таки может птица 64 битного поставить для начала ? Если верить офф сайту, под win такого не существует... Цитировать Win64 Superserver/Classic & Embedded Не пойдет ? для пробы ?Windows Installer, Firebird-2.1.0.17755_0_x64.exe 7 Mb Zip kit, Firebird-2.1.0.17755-0_x64.zip 9 Mb Embedded, separate download, zip kit, Firebird-2.1.0.17755-0_x64_embed.zip 5 Mb Debug Builds Zip kit, Firebird-2.1.0.17755-0_x64_pdb.zip 15 Mb Embedded, separate download, zip kit, Firebird-2.1.0.17755-0_x64_embed_pdb.zip 8 Mb Таки все-таки _какой_ клиент цепляет IBE и какой QT ? Название: Re: Error opening database [Firebird] Отправлено: Tonal от Март 31, 2008, 10:24 Так ты собирал Qt под x64?
Тады естественно, работать не будет - нужно и клиента от птица x64 брать. Если я не ошибаюсь, интероп 32-64 в винде далеко не прозрачный. :-) Название: Re: Error opening database [Firebird] Отправлено: Вячеслав от Март 31, 2008, 10:43 Ну тогда почти все ясно ;) IBE- 32 бита тож ?
Название: Re: Error opening database [Firebird] Отправлено: fear от Март 31, 2008, 13:33 Цитировать Windows Installer, Firebird-2.1.0.17755_0_x64.exe 7 Mb дай ссылку, откуда это...Цитировать Таки все-таки _какой_ клиент цепляет IBE и какой QT ? IBE и qt цепляют FBCLIENT.DLLЦитировать IBE- 32 бита тож ? даЦитировать Так ты собирал Qt под x64? Qt собиралось как x32А с каким составом приложение поставлять на чистую винду? Цитировать DatabaseTest.exe с таким составом пишет что драйвер не загруженMicrosoft.VC80.CRT.manifest msvcm80.dll msvcp80.dll msvcr80.dll QtCore4.dll QtGui4.dll QtSql4.dll qsqlibase4.dll fbclient.dll Название: Re: Error opening database [Firebird] Отправлено: Tonal от Март 31, 2008, 16:20 Для птица 2.0.х забыл MSVCR71.dll
Название: Re: Error opening database [Firebird] Отправлено: pastor от Март 31, 2008, 17:04 Если верить офф сайту, под win такого не существует... Наверное у нас с вами разные офф сайты ;) Цитировать Firebird 2.1 Release Candidate 2 is available for field testing on 64-bit and 32-bit Windows, Linux and MacOSX x86. http://www.firebirdsql.org/index.php?op=files&id=fb210_RC2 Название: Re: Error opening database [Firebird] Отправлено: fear от Март 31, 2008, 17:21 Для птица 2.0.х забыл MSVCR71.dll ничего не меняет, поидее и 'fbclient.dll' не к чему... Microsoft.VC80.CRT.manifest редактировать не надо случайно, стандартный подойдёт?lastError после попытке открытия возвращает "Driver not loaded Driver not loaded". Название: Re: Error opening database [Firebird] Отправлено: pastor от Март 31, 2008, 17:45 lastError после попытке открытия возвращает "Driver not loaded Driver not loaded". Попробуёте поюзать поиск по форуму на предмет "Driver not loaded". Эта тема обсуждалась много раз, возможно найдете решение этой проблемы Название: Re: Error opening database [Firebird] Отправлено: fear от Март 31, 2008, 18:21 Цитировать Наверное у нас с вами разные офф сайты спасибо, не обратил внимание на тестируемые версииhttp://www.firebirdsql.org/index.php?op=files&id=fb210_RC2 поиск действительно помог :) приложение над поставлять в след. виде: Цитировать DatabaseTest.exe Microsoft.VC80.CRT.manifest msvcm80.dll msvcp80.dll msvcr80.dll QtCore4.dll QtGui4.dll QtSql4.dll sqldrivers/qsqlibase4.dll Название: Re: Error opening database [Firebird] Отправлено: fear от Март 31, 2008, 18:58 попробовал счас пересобрать плагин с 64х битной птицей, sqlbrowser при конекте выкидывает ошибку "can`t format message 13:98 -- message file D:\Lang\Qt\4.3.1\demos\sqlbrowser\firebird.msg not found error opening database"
Название: Re: Error opening database [Firebird] Отправлено: Пантер от Март 31, 2008, 19:12 Закинь из огнептица firebird.msg куда он просит и увидишь свою ошибку.
Название: Re: Error opening database [Firebird] Отправлено: fear от Март 31, 2008, 19:43 Закинь из огнептица firebird.msg куда он просит и увидишь свою ошибку. да ошибка та же самая, а что файл такой firebird.msg, для чего?Название: Re: Error opening database [Firebird] Отправлено: Пантер от Март 31, 2008, 21:43 Этот файл содержит описания ошибок огнептица. Его нужно закидывать на все клиенты, чтобы выдавало не код ошибки, а ее наименование. У меня на всех клиентах этот файл в корневике диска c:\.
Название: Re: Error opening database [Firebird] Отправлено: Tonal от Апрель 01, 2008, 07:11 Так, значит собираем в кучу:
1) Клиент птица, драйвер Qt и сама Qt должны быть одной битности. Или всё 64, или все 32. 2) Клиент птица версий до 2.0.3 включительно линкован с MSVCR71.dll. версия 2.1 - msvcr80.dll и тербует манифест или установленного рантайма. снапшоты 2.0.4 - не в курсе. :) 3) IBE 32-битный и будет работать только с 32-битным клиентом. 4) firebird.msg - файл с описаниями ошибок должен лежать там же, где и прога, или его положение можно указать ключиком в реестре - смотри доку. :) Название: Re: Error opening database [Firebird] Отправлено: fear от Апрель 01, 2008, 13:33 1) Клиент птица, драйвер Qt и сама Qt должны быть одной битности. Или всё 64, или все 32. на чём основано это утверждение? кто-то собирал qt x64?2) Клиент птица версий до 2.0.3 включительно линкован с MSVCR71.dll. версия 2.1 - msvcr80.dll и тербует манифест или установленного рантайма. снапшоты 2.0.4 - не в курсе. :) любое приложение собранное в VS .NET, должно поставляться с манифестом3) IBE 32-битный и будет работать только с 32-битным клиентом. IBE 32x отлично работает с 64х битным клиентомНазвание: Re: Error opening database [Firebird] Отправлено: Tonal от Апрель 01, 2008, 20:07 1) http://dnjonline.com/article.aspx?ID=jun07_access3264
http://en.wikipedia.org/wiki/Windows_XP_Professional_x64_Edition раздел Compatibility with 32-bit applications http://www.codeproject.com/KB/system/64BitOSAndPortingIssues.aspx В общем выдача гугля по запросу "64 bit dll in 32 bit applications" - чиселки можно поменять местами :-) 2) Программы, собранные VC .Net и VC 2003 (7.0 и 7.1 соответственно) не требовали манифеста (птиц 2.0.3 с сайта собран VC 2003 и манифеста не требует) 3) Мистика. :-) Название: Re: Error opening database [Firebird] Отправлено: fear от Апрель 01, 2008, 23:39 2) Программы, собранные VC .Net и VC 2003 (7.0 и 7.1 соответственно) не требовали манифеста (птиц 2.0.3 с сайта собран VC 2003 и манифеста не требует) манифест может быть встроен в exe`шник3) Мистика. :-) факт :-)Название: Re: Error opening database [Firebird] Отправлено: Tonal от Апрель 02, 2008, 07:16 мистики никакой нет, манифест можно встроить в exe`шник Ну и напусти редактор ресурсов на те же fbserver.exe, gbak.exe, gfix.exe, isql.exe от 2.0.3И посмотри, что там кроме версии есть. :-) А про IBE - ты же говорил, что он у тебя через embedded бегает. Может ты имеешь в виду, что конектишся к 64-битному серверу? Эт нормально. Ну и можно таки чистый эксперимент провести - написать примитивные прогу и дллку разными битностями, и посмотреть как их можно сочетать - всего-то 6 случаев надо проверить. :-) Название: Re: Error opening database [Firebird] Отправлено: fear от Апрель 02, 2008, 19:39 А про IBE - ты же говорил, что он у тебя через embedded бегает. это я предпологал, а на самом деле, IBE конектится к 64х серверу через клиента-dll`ку от того самого 64х сервера. Получается эт тоже нормально :-)Может ты имеешь в виду, что конектишся к 64-битному серверу? Эт нормально. Ну и можно таки чистый эксперимент провести - написать примитивные прогу и дллку разными битностями, и посмотреть как их можно сочетать - всего-то 6 случаев надо проверить. :-) да что-то не охото :-)Название: Re: Error opening database [Firebird] Отправлено: Tonal от Апрель 03, 2008, 07:00 это я предпологал, а на самом деле, IBE конектится к 64х серверу через клиента-dll`ку от того самого 64х сервера. Получается эт тоже нормально :-) Цитировать Маммой кланус! (с) Гоблин |