firebirdの.netプロバイダ(FirebirdSql.Data.FirebirdClient)が動作するLinuxでFirebirdに2.5(64bit)を埋め込もうとしています。Firebirdに埋め込まれたMonoを64bit Linux環境で動かす
私のテストアセンブリ用のFB組み込みセットアップは、Windows Firebird EmbeddedバージョンでWinX86_64で動作しています。
- * libfbembed.so firebird.msg
- security2.fdb
- libicu *
- libibを*:私はcoresponding FB組込みLinuxのバージョンは、アセンブリのディレクトリにファイルを置い使用Linuxの
"RootDirectory"をfirebird.confのアセンブリディレクトリに設定します。 シェル環境変数LD_LIBRARY_PATHおよびFIREBIRDをアセンブリディレクトリに設定します。動作しないモノラルdllmapでFirebirdのClientlibraryのリダイレクト
- :前に私がやったこと
FbConnectionStringBuilder conn = new FbConnectionStringBuilder(); conn.Database = @"/home/dev/firebirdTest/1stDB.FDB"; conn.ServerType = FbServerType.Embedded; conn.UserID = "SYSDBA"; conn.Password = "masterkey"; conn.Charset = "UTF8"; conn.DataSource = "localhost"; conn.ClientLibrary = "libfbembed.so"; string connStr = conn.ConnectionString; var dbcon = new FbConnection(connStr); FbConnection.CreateDatabase(connStr, pageSize: 8192, forcedWrites: true, overwrite: false); dbcon = new FbConnection(connStr); dbcon.Open();
。 C#コードでClientLibを明示的に設定することで解決しました。
- Linuxでisqlを使用して手動でデータベースを作成する。
- Linuxでコードを使用してデータベースを作成する。
- Firebird .NETプロバイダは、FB_ {sanitizedName} .dllとDynamicAssembly.dllをデバッグモードで作成します。
- .NETプロバイダは本当にサイレントです。デバッグは、linux上で "strace mono {testAssembly.exe}"を使ってアセンブリを開始することによって行われました。
- FbConnection.CreateDatabaseが、 "open O_CREAT"(FbCreateDatabaseを呼び出す)中にI/Oエラーでクラッシュします(ページサイズが8192でない場合)。ページサイズを明示的に8192に設定するとこれが解決されます。
(...と日間ここで立ち往生)さて、私は次のエラーで実行します。
(ここではコードのように)既存のDatabasefileを開く、でクラッシュ:
FirebirdSql.Data.FirebirdClient.FbException:無効なデータベース・ハンドル(ノーアクティブ接続)--->無効なデータベース・ハンドル(ノーアクティブ接続)
散策間違っている?
私はFirebirdエンベッデッドがMonoのFirebird .netプロバイダで動作するとは思わない。私は仮定します(しかし、私は間違っているかもしれません)。あなたはFirebirdでこの質問をしたいかもしれません。ネットプロバイダメーリングリストも同様です。 –