2016-04-11 13 views
3

Ich bin neu bei Ubuntu und ich habe es gerade auf einem Computer installiert. Ich habe Samba installiert und die Ordner "/ samba" und "/ hd" freigegeben. Ich habe Firebird heruntergeladen und installiert und meine unter Windows erstellte Datenbank kopiert und in "/ samba" eingefügt. Das ist mein Java-Code:Keine Verbindung zu 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(); 
    } 

ich diesen Fehler:

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 

Wenn ich auf "/ samba" und geben Sie gehen:

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

Es funktioniert völlig in Ordnung, ich kann auswählen, löschen, aktualisieren, einfügen, ... ohne Probleme.

Wenn ich IBExpert auf meinem Windows-Rechner verwenden, um meine Datenbank in Ubuntu verbinden heißt es:

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

Wenn ich Flamerobin verwenden heißt es:

An assertion failed! 

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

Aber es verbindet. Ich kann auswählen, löschen, aktualisieren, ...

+0

Vielleicht Zugang zu ermöglichen IBExpert, Ihre Java-App ... – Majkl

+0

ich in das Verzeichnis müssen Habe "chmod 755/samba -R" und der Fehler ist immer noch da. – Bolaum

Antwort

1

Das Problem besteht darin, dass der Pfad, den Sie in der Verbindungszeichenfolge jdbc:firebirdsql://localhost:3050/samba/LNX.FDB angegeben haben, samba/LNX.FDB ist und nicht /samba/LNX.FDB. Relative Pfade hängen von der Plattform, dem Benutzer und der Firebird-Konfiguration ab.

dokumentiert Wie in der Jaybird release notes Sie müssen jdbc:firebirdsql://localhost:3050//samba/LNX.FDB verwenden:

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 

Alternativ können Sie einen Aliasnamen anstelle definieren und verwenden.

In Bezug auf Ihre Probleme mit IB Expert und Flamerobin scheinen sie unabhängig voneinander zu sein und sollten eigentlich getrennte Fragen sein. Das IB Expert-Problem scheint zu sein, dass Sie einen Hostnamen (Server-Test) angegeben haben, der nicht in eine (IPv4) IP-Adresse aufgelöst werden kann, oder der Server die Verbindungsanforderung nicht akzeptiert. Ein Grund könnte sein, dass der Firebird-Dienst diese IP-Adresse nicht abhört; Auf Ubuntu standardmäßig Firebird hört nur auf localhost. Der flomerobin-Fehler klingt wie ein Fehler in Flamerobin (oder Sie geben einen nicht unterstützten Verbindungszeichensatz (?) An).

Über Ihre Verwendung von Samba und die Verwendung einer Netzwerkfreigabe: Legen Sie keine Firebird-Datenbanken auf eine Netzwerkfreigabe. Der Zugriff auf eine Firebird-Datenbank auf einer Netzwerkfreigabe (insbesondere von mehreren Servern) könnte die Datenbank beschädigen. Wenn Sie von mehreren Hosts auf eine Firebird-Datenbank zugreifen möchten, müssen Sie einen Firebird-Server verwenden und eine Verbindung herstellen.

+0

Das hat funktioniert. Vielen Dank! Jetzt kann ich mich darauf konzentrieren, mein IBExpert-Problem zu beheben. – Bolaum

0

Über IBExpert: Dieser Screenshot zeigt beispielhaft, wie Anmeldeformular aussehen mit ubuntu zu verbinden: Sie

enter image description here