Berkeley DB for .NET 3.5 (正確にはバージョン 5.0.21) に問題があります。
primaryKeyDuplicatesPolicy = DuplicatesPolicy.NONE
プライマリDBで使用したときにうまく機能したセットアップは次のとおりです。
var btcfg = new BTreeDatabaseConfig
{
Duplicates = primaryKeyDuplicatesPolicy,
Creation = CreatePolicy.IF_NEEDED,
FreeThreaded = false,
ErrorPrefix = "bdbIndex",
ReadUncommitted = false,
UseMVCC = false,
CacheSize = new CacheInfo(cacheSize, 0, 1),
};
var primaryDb = BTreeDatabase.Open(additionalPath + "primary.db", btcfg);
var secondaryDb = SecondaryBTreeDatabase.Open(additionalPath + "secondary.db",
new SecondaryBTreeDatabaseConfig(PrimaryDb, GetSecondaryDbKey)
{
AutoCommit = btcfg.AutoCommit,
Creation = CreatePolicy.IF_NEEDED,
FreeThreaded = btcfg.FreeThreaded,
ErrorPrefix = btcfg.ErrorPrefix,
ReadUncommitted = btcfg.ReadUncommitted,
UseMVCC = btcfg.UseMVCC,
Env = env,
Duplicates = DuplicatesPolicy.NONE
});
今、primaryKeyDuplicatesPolicy
他の値に変更するとすぐに、すべてSecondaryBTreeDatabase.Open()
が例外で中断しますBerkeleyDB.DatabaseException : Invalid argument
。
では、プライマリ DB に重複するセカンダリ DB を持つことは可能ですか? (マニュアルによると、私が理解している限り、可能です)。
第二に、私は何を間違っていますか? このことを機能させるにはどうすればよいですか?
PS: 環境の初期化を試みましたが、解決しません。また、ロジックを 2 つのプライマリ DB に分割することは、現時点では困難です。