2016-04-11 5 views
3

Je suis nouveau sur Ubuntu et je l'ai juste installé sur un ordinateur. J'ai installé Samba et partagé les dossiers "/ samba" et "/ hd". J'ai téléchargé et installé Firebird et copié ma base de données que j'ai créée sur Windows et l'ai mise dans "/ samba". Ceci est mon code Java:Impossible de se connecter à 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(); 
    } 

Je reçois cette erreur:

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 

Si je vais à "/ samba" et tapez:

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

Il fonctionne parfaitement bien, je peux sélectionnez, supprimez, mettez à jour, insérez, ... sans aucun problème.

Si je IBExpert sur ma machine Windows pour se connecter à ma base de données dans Ubuntu, il dit:

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

Si je flamerobin il dit:

An assertion failed! 

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

Mais il se connecte. Je peux sélectionner, supprimer, mettre à jour, ...

+0

Peut-être que vous aurez besoin pour permettre l'accès au répertoire IBExpert, votre Java App ... – Majkl

+0

I a fait "chmod 755/samba -R" et l'erreur est toujours là. – Bolaum

Répondre

1

Le problème est que le chemin que vous avez spécifié dans la chaîne de connexion jdbc:firebirdsql://localhost:3050/samba/LNX.FDB est samba/LNX.FDB et non /samba/LNX.FDB. Les chemins relatifs dépendent de la plateforme, de l'utilisateur et de la configuration de Firebird.

Comme indiqué dans le Jaybird release notes vous devez utiliser 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 

Alternativement, vous pouvez définir un alias à la place et l'utiliser. En ce qui concerne vos problèmes avec IB Expert et Flamerobin, ils semblent être sans rapport et devraient vraiment être des questions distinctes. Le problème IB Expert semble être que vous avez spécifié un nom d'hôte (Server-Test) qui ne peut pas être résolu en une adresse IP (IPv4) ou le serveur n'accepte pas la demande de connexion. Une raison pourrait être que le service Firebird n'écoute pas sur cette adresse IP; sur Ubuntu par défaut Firebird écoute uniquement sur localhost. L'erreur flamerobin ressemble à un bogue dans Flamerobin (ou vous spécifiez un jeu de caractères de connexion non pris en charge (?)). A propos de votre utilisation de samba et de l'utilisation d'un partage réseau: ne placez pas les bases de données Firebird sur un partage réseau. L'accès à une base de données Firebird sur un partage réseau (en particulier à partir de plusieurs serveurs) peut corrompre la base de données. Si vous souhaitez accéder à une base de données Firebird à partir de plusieurs hôtes, vous devez utiliser un serveur Firebird et vous y connecter.

+0

Cela a fonctionné. Je vous remercie! Maintenant, je vais pouvoir me concentrer sur la résolution de mon problème IBExpert. – Bolaum

0

A propos IBExpert: Cette capture d'écran est par exemple comment regarder le formulaire d'inscription pour se connecter avec ubuntu:

enter image description here