私はUbuntuを初めて使用し、コンピューターにインストールしました。Sambaをインストールし、「/ samba」フォルダーと「/ hd」フォルダーを共有しました。Firebirdをダウンロードしてインストールし、Windowsで作成したデータベースをコピーして、「/ samba」に配置しました。これは私のJavaコードです:
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
「/ samba」に移動して次のように入力した場合:
isql-fb
connect "localhost:/samba/LNX.FDB" user 'SYSDBA' password 'masterkey';
それは完全にうまく機能し、私は選択、削除、更新、挿入などを行うことができます...まったく問題ありません。
WindowsマシンでIBExpertを使用して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
しかし、それはつながります。選択、削除、更新、...
問題は、接続文字列で指定したパスjdbc:firebirdsql://localhost:3050/samba/LNX.FDB
がsamba/LNX.FDB
であり、ではないこと/samba/LNX.FDB
です。相対パスは、プラットフォーム、ユーザー、およびFirebirdの構成によって異なります。
Jaybirdリリースノートに記載されているように、以下を使用する必要がありますjdbc:firebirdsql://localhost:3050//samba/LNX.FDB
。
Linuxでは、ルート
/
をパスに含める必要があります。にあるデータベース/opt/firebird/db.fdb
は、以下のURLを使用する必要があります(ポートの後の二重スラッシュに注意してください!)。jdbc:firebirdsql://host:port//opt/firebird/db.fdb
または、代わりにエイリアスを定義して使用することもできます。
IB ExpertとFlamerobinの問題に関しては、それらは無関係のようであり、実際には別々の質問である必要があります。IB Expertの問題はServer-Test
、(IPv4)IPアドレスに解決できないホスト名()を指定したか、サーバーが接続要求を受け入れないことであると思われます。理由としては、FirebirdサービスがそのIPアドレスをリッスンしていないことが考えられます。Ubuntuでは、デフォルトでFirebirdはローカルホストでのみリッスンします。Flamerobinエラーは、Flamerobinのバグのように聞こえます(または、サポートされていない接続文字セット(?)を指定しています)。
sambaの使用とネットワーク共有の使用について:Firebirdデータベースをネットワーク共有に配置しないでください。ネットワーク共有上のFirebirdデータベースに(特に複数のサーバーから)アクセスすると、データベースが破損する可能性があります。複数のホストからFirebirdデータベースにアクセスする場合は、Firebirdサーバーを使用して接続する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加