Migrate 32bit to 64bit (FreeBSD, PostgreSQL) に続いて、単なるデータコピーで移行が完了しないケースに 1 つに GDBM (GNU dbm) があります。
現在メールフィルタの学習型データベースに bsfilter + gdbm を使用しています。このデータベースファイルが、互換性がありません。
32bit の環境で bsfilter mail_file とすれば即結果が返るにも関わらず、データコピーしただけの 64bit 環境では 完全に沈黙 します。
別の用途と事例では Invalid argument で先に進まないこともある様ですね。PostgreSQL 同様 dump -> restore する以外に方法がない様です。
#// dump use GDBM_File; use Fcntl; my $src = 'src.gdbm'; my $txt = 'src.dump'; my %str = (); my $dbh = tie (%str, 'GDBM_File', $src, O_RDWR|O_CREAT, 0600); my $line = ''; foreach (keys %str) { $line .= $_ . "\t" . $str{$_} . "\n"; } undef $dbh; untie %str; open WRITE, "+>$txt"; print WRITE $line; close WRITE;
#// restore use GDBM_File; use Fcntl; my $txt = 'src.dump'; my $dist = 'dist.gdbm'; my %str = (); my $dbh = tie (%str, 'GDBM_File', $dist, O_RDWR|O_CREAT, 0600); open READ, "<$txt"; my @line = <READ>; close READ; foreach my $line (@line) { chomp $line; my ($key, $value) = split(/\t/, $line); $str{$key} = $value; } undef $dbh; untie %str;
- Migrate 32bit to 64bit (FreeBSD, PostgreSQL)
- Migrate 32bit to 64bit (FreeBSD, GDBM)
- Migrate 32bit to 64bit (FreeBSD, ionCube PHP Loader)
- Migrate to FreeBSD 9.1-RELEASE (ImageMagick 6.4)
- Migrate to FreeBSD 9.1-RELEASE (PostgreSQL)
- Migrate to FreeBSD 9.1-RELEASE (JDK 1.6)
- Migrate to FreeBSD 9.1-RELEASE (idnconv)
- Migrate to FreeBSD 9.1-RELEASE (PDFJ)