序列化和反序列化perl DBI连接对象

时间:2016-07-29 21:43:33

标签: perl dbi storable

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

使用可存储的qw / freeze thaw /;

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);

返回错误: 全局符号

  

&#34; $ DRH&#34;需要明确的包名(你忘了宣布&#34;我的   $ drh&#34;?)(eval 33)第6行。

1 个答案:

答案 0 :(得分:12)

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