2009-09-22 2 views
2

Я новичок в Firebird, используя его версию Java Jaybird, но не могу подключиться из базы данных (файл .fdb). Проблема возникает, как это:Ошибка подключения в JayBird

org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544375. unavailable database

ИЛИ

java.lang.RuntimeException: Failed to initilize Jaybird native library. This is most likley due to a failure to load the firebird client library.

Используя следующий код:

Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance(); 
connection = DriverManager.getConnection("jdbc:firebirdsql://localhost/3050:C:/XLNKREPOS /FIRBIRDXA.FDB", "SYSDBA", "masterkey"); 

Имея следующие файлы в путь сборки проекта Eclipse:

  • jaybird- полный-2.1.5.jar
  • jaybird21.dll
  • fbclient.dll
  • fbembed.dll

Кроме того, используя аргументы виртуальной машины Java, как -Djava.library.path="D:\Shared\Firebird\Jaybird-2.1.5JDK_1.5"

Скажи, что не так в моем подходе?


Спасибо RRUZ за предоставление ответа.

На самом деле не было места после «C:/XLNKREPOS» в моей строке подключения. Это была копия прошлой ошибки. Снова & снова Я получил следующее исключение SQL:

org.firebirdsql.jdbc.FBSQLException: исключение GDS. 335544375. недоступна база данных

И эта база данных не используется в других программах.

Надеюсь, что мой пост позволяет понять мою проблему.

Благодаря

+0

Вы используете классический сервер, суперсервер или встроенную версию? –

ответ

1

Я думаю, что проблема должна быть строка подключения, есть пробел после "C:/XLNKREPOS"

Попробуйте

connection = DriverManager.getConnection("jdbc:firebirdsql://localhost/3050:C:/XLNKREPOS/FIRBIRDXA.FDB", "SYSDBA", "masterkey"); 

Bye.

1

У меня была такая же проблема, она была вызвана этими чертами перед локальным хостом. Этот URL должен быть:

jdbc:firebirdsql:localhost/3050:C:/XLNKREPOS/FIRBIRDXA.FDB", 
3

ОП является смешение двух форматов JDBC URL-адреса, поддерживаемые JayBird.

Либо использовать

jdbc:firebirdsql://[host]{:[port]}/[path] 

или

jdbc:firebirdsql:[host]{/[port]}:[path] 

{...} используется для обозначения необязательная часть

1

Когда я получил эту ошибку это было потому, что я использовал x64 Firebird версии вместо стандартного x86 версия. Я думал, так как у меня была 64-битная ОС, которая соответствовала мне встроенным двоичным файлам ... Надеюсь, это исправит вашу проблему.

Советы по устранению неисправностей:

Я также был в состоянии дальнейшей диагностики дополнительного Firebird проблемы, добавив последнюю log4j банки с сайта Apache для моего проекта/классов. Затем я добавил файл log4j.properties в моем умолчанию/корневой каталог Src со следующими свойствами, установленными внутри:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%c{1},%p] %m%n 
log4j.rootCategory=DEBUG, stdout 
log4j.category.org.firebirdsql=DEBUG, stdout 

Я также должен был установить System.setProperty("FBLog4j", "true"); в моем коде.

Другая вещь, которую вы можете сделать, это убедиться, что вы работаете в последней и самой лучшей из их репозитория в http://firebird.cvs.sourceforge.net/viewvc/firebird/client-java/?view=tar

Просто распакуйте архив и скомпилировать его, используя их в комплект поставки сценарий сборки (build.bat/build.sh) , После компиляции посмотрите в каталоге «output/lib», и вы найдете самую последнюю версию jaybird jar (на данный момент это 2.2.0). Вам также понадобится последняя dll jaybird (на данный момент это 22), которая находится в «родной» директории. Я пережил много боли, пытаясь понять это дерьмо. Документация на сайте Firebird очень устарела и плохо написана.

Смежные вопросы