2016-04-11 3 views
3

Я новичок в Ubuntu, и я просто установил его на компьютер. Я установил Samba и поделился папками «/ samba» и «/ hd». Я загрузил и установил Firebird и скопировал мою базу данных, которую я создал в Windows, и поместил ее в «/ samba». Это мой Java-код:Не удается подключиться к Firebird (Ubuntu)

public static Connection getConnection() throws SQLException { 
     Connection connection = null; 
     try { 
      Class.forName("org.firebirdsql.jdbc.FBDriver"); 
     } catch (ClassNotFoundException e) { 
      throw new RuntimeException(e); 
     } 
     connection = DriverManager.getConnection("jdbc:firebirdsql://localhost:3050/samba/LNX.FDB", "sysdba", 
       "masterkey"); 
     return connection; 
    } 

    public static void main(String[] args) throws SQLException { 
     getConnection(); 
    } 

Я получаю эту ошибку:

Exception in thread "main" org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544344. I/O error during "open" operation for file "samba/LNX.FDB" 
Error while trying to open file 
null 
    at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:120) 
    at org.firebirdsql.jdbc.AbstractDriver.connect(AbstractDriver.java:136) 
    at java.sql.DriverManager.getConnection(DriverManager.java:571) 
    at java.sql.DriverManager.getConnection(DriverManager.java:215) 
    at br.com.ipsnet.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:16) 
    at br.com.ipsnet.jdbc.ConnectionFactory.main(ConnectionFactory.java:22) 
Caused by: org.firebirdsql.gds.GDSException: I/O error during "open" operation for file "samba/LNX.FDB" 
Error while trying to open file 
null 
    at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.readStatusVector(AbstractJavaGDSImpl.java:2098) 
    at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.receiveResponse(AbstractJavaGDSImpl.java:2048) 
    at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.internalAttachDatabase(AbstractJavaGDSImpl.java:463) 
    at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscAttachDatabase(AbstractJavaGDSImpl.java:411) 
    at org.firebirdsql.jca.FBManagedConnection.<init>(FBManagedConnection.java:105) 
    at org.firebirdsql.jca.FBManagedConnectionFactory.createManagedConnection(FBManagedConnectionFactory.java:509) 
    at org.firebirdsql.jca.FBStandAloneConnectionManager.allocateConnection(FBStandAloneConnectionManager.java:65) 
    at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:118) 
    ... 5 more 

Если я иду в "/ самба" и введите:

isql-fb 
connect "localhost:/samba/LNX.FDB" user 'SYSDBA' password 'masterkey'; 

Он отлично работает, я могу выбирать, удалять, обновлять, вставлять, ... без проблем.

Если я использую IBExpert на моей машине Windows, чтобы подключиться к базе данных в Ubuntu он говорит:

Unable to complete network request to host "Server-Test". 
Failed to estabilish connection. 

Если я использую Flamerobin он говорит:

An assertion failed! 

../src/common/strconv.cpp(3031): assert "Assert failure" failed in wxCSConv(): invalid encoding value in wxCSConv ctor 

Но она соединяет. Я могу выбрать, удалить, обновить, ...

+0

Может быть, Вам нужно будет разрешить доступ к каталогу для IBExpert, ваш Java App ... – Majkl

+0

Я сделал «chmod 755/samba -R», и ошибка все еще там. – Bolaum

ответ

1

Проблема в том, что путь, указанный вами в строке подключения jdbc:firebirdsql://localhost:3050/samba/LNX.FDB, равен samba/LNX.FDB, а не /samba/LNX.FDB. Относительные пути зависят от конфигурации платформы, пользователя и Firebird.

Как указано в Jaybird release notes вам нужно использовать jdbc:firebirdsql://localhost:3050//samba/LNX.FDB:

On Linux the root / should be included in the path. A database located on /opt/firebird/db.fdb should use the URL below (note the double slash after port!).

jdbc:firebirdsql://host:port//opt/firebird/db.fdb 

В качестве альтернативы, вы можете определить псевдоним вместо этого и использовать.

Что касается ваших проблем с IB Expert и Flamerobin, они, похоже, не связаны друг с другом и должны быть отдельными вопросами. Проблема IB Expert заключается в том, что вы указали имя хоста (Server-Test), которое не может быть разрешено для IP-адреса (IPv4), или сервер не принимает запрос на соединение. Причина может заключаться в том, что служба Firebird не прослушивает этот IP-адрес; по Ubuntu по умолчанию Firebird только слушает на localhost. Ошибка фламеробина звучит как ошибка в Flamerobin (или вы указываете неподдерживаемый набор символов соединения (?)).

О вашем использовании samba и использовании сетевого ресурса: не размещайте базы данных Firebird на сетевом ресурсе. Доступ к базе данных Firebird на сетевом ресурсе (особенно с нескольких серверов) может привести к повреждению базы данных. Если вы хотите получить доступ к базе данных Firebird с нескольких хостов, вам необходимо использовать сервер Firebird и подключиться через него.

+0

Это сработало. Спасибо! Теперь я смогу сосредоточиться на решении проблемы с IBExpert. – Bolaum

0

О IBExpert: Этот скриншот пример того, как искать регистрационную форму, чтобы связаться с убунту:

enter image description here

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