dbmの"HASH: Out of overflow pages. Increase page size"を解決する方法が分からない
OSXでRubyのdbmを使った時に遭遇。
require 'dbm' db = DBM.open('hoge', 0666, DBM::NEWDB) 1000000.times do |n| p n db[n.to_s] = 'a' * 1024 end
41838回目で例外発生。
HASH: Out of overflow pages. Increase page size DBMError: dbm_store failed from (irb):5:in `[]=' from (irb):5 from (irb):3:in `times' from (irb):3
できあがったファイルのサイズは158MB程度。
1MiB単位で追加していった場合は、ファイルサイズが16GB以上にふくれあがってディスク制限にひっかかって途中終了。
page size ってなんだろうか。いわゆる仮想記憶のページングのやつの事でいいんだろうか。
追記: 2012/09/27 (1)
追記: 2012/09/27 (2)
誤魔化し。
require 'dbm' begin require 'gdbm' silence_warnings do DBM = GDBM end rescue LoadError end