6

64ビットSolaris(本番)マシンでStorableを使用して凍結されたデータベースBLOBを解凍しようとしています。32ビットWindows(開発)PCで解凍しようとすると、「バイトオーダーは互換性がありません」というエラーが表示されます。

perl -v (on solaris)
This is perl, v5.8.8 built for i86pc-solaris-64

perl -v (on Windows)
This is perl, v5.10.1 built for MSWin32-x86-multi-thread

正確なエラーは次のとおりです。

(Unable to read: Byte order is not compatible at blib\lib\Storable.pm (autosplit into  blib\lib\auto\Storable\thaw.al) line 415, at ../handlers/Search/actions/SearchSendQueue.pm line 124 )

SearchSendQueue.pmの124行目:

my $object = thaw( $item->{object} );

32ビットマシンでこのオブジェクトを解凍する方法を知っている人はいますか?

注:オブジェクトは有効であり、64ビットの実動マシンで動作しています。私はすでに「$Storable:: interwork_56_64bit=1;」を試しました。他のフォーラムで提案されているように。

4

2 に答える 2

9

保存可能なドキュメントによると:

Storableは、Storableを構築したCコンパイラのさまざまなC言語タイプのサイズを含むファイルヘッダーを書き込み(ネットワーク順で書き込まない場合)、同じ(または互換性のある)アーキテクチャ上にないStorableによって書き込まれたファイルのロードを拒否します。

同じセクションで、Storableの基本的な使用法はローカルで高速永続化方法であることを示唆しています。ただし、を使用nstoreして、永続化された構造をネットワークバイトオーダーで格納できます。その結果、読み取りと保存は遅くなりますが、すべてのプラットフォームで機能します。

したがって、64ビットマシンを使用して、を使用してネットワーク順にデータを読み取り、再保存する必要があることをお勧めしますnstore

于 2010-01-07T07:41:46.323 に答える
5

ドキュメントにはそれが可能であると示されていることは知っていますが、64ビットマシンでnfreeze / nstore *を使用する以外に、それを機能させることはできませんでした。

于 2010-01-07T06:24:07.920 に答える