Я пытаюсь таять база данных BLOB, которая была заморожена с помощью Storable на 64-разрядном Солярисе (производство) машина. То, когда я пытаюсь таять в 32-разрядном Windows (разработка) ПК, я получаю "Порядок байтов, не является совместимой ошибкой".
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 )
строка 124 из SearchSendQueue.pm:
my $object = thaw( $item->{object} );
Кто-либо знает, как я могу таять этот объект на 32-разрядной машине?
Примечание: Объект является доступным и рабочим на производственной машине на 64 бита. Я уже попробовал "$Storable:: interwork_56_64bit = 1"; как предложено на других форумах.
Storable говорится:
Storable записывает заголовок файла, который содержит размеры различных типов языка C для компилятора C, который построил Storable (если запись не выполняется в сетевом порядке), и будет отказываться загружать записанные файлы. с помощью Storable не на той же (или совместимой) архитектуре.
В том же разделе они предполагают, что основным использованием Storable является локальный и FAST постоянный метод. Однако вы можете использовать nstore
для хранения устойчивой структуры в порядке байтов сети . В результате он будет читать и хранить медленнее, но работает на всех платформах.
Таким образом, предлагается использовать 64-битную машину для чтения и повторного сохранения данных в сетевом порядке с помощью nstore
.
Я знаю, что в документации указано, что это возможно, но мне никогда не удавалось заставить его работать, кроме как с помощью nfreeze / nstore * на 64-битной машине.