0

我需要用 DBI 连接对象序列化一个数组,以便使用共享内存与其他进程共享。但是反序列化不起作用。

使用可储存的 qw/冻融/;

my @connections;

for(my $c = 0;$c < 5;$c++) {
  my $conn = DBI->connect($dsn,$user,$password,{'AutoCommit' => 1, 'RaiseError' => 1, 'PrintError' => 0});
  push(@connections,$conn);
}

my $shm = freeze(@connections);
my $obj = thaw($shm);

返回错误:全局符号

"$drh" 在 (eval 33) 第 6 行需要明确的包名称(您是否忘记声明“my $drh”?)。

4

1 回答 1

12

您不能序列化数据库句柄/连接,因为它包含 Storable 无法访问的用户空间数据(即在 Perl 外部和数据库库内部,也可能在 TLS 库中)以及文件描述符等内核数据。

于 2016-07-29T22:12:18.440 回答