gpt4 book ai didi

database - DBM::Deep:交易问题

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:33 27 4
gpt4 key购买 nike

我从来没有做过交易(在编程方面),因此我不知道是我的脚本有问题还是其他问题:

#!/usr/bin/env perl
use warnings;
use 5.012;
use DBM::Deep;

my $db = DBM::Deep->new( 'foo.db' );

my $trans = $db->supports( 'transactions' );
say 'Does ', $trans ? '' : 'NOT ', 'support transactions';

$db->{key} = 'value';
$db->begin_work;
$db->{key1} = 'value2';
$db->rollback;
$db->{key1} = 'value1';
$db->commit;

输出:

# Does support transactions
# DBM::Deep: Cannot allocate transaction ID at ./perl1.pl line 12

部分评论:

my $db = DBM::Deep->new( file => 'my.db', num_txns => 1 );

$db->{key} = 'value';
$db->begin_work;
$db->{key1} = 'value2';
$db->rollback;
$db->begin_work;
$db->{key1} = 'value1';
$db->commit;

最佳答案

很抱歉花了这么长时间来回答这个问题 - 我几天前才找到它。 (我是 DBM::Deep 的维护者。)

问题是 num_txns 仅在创建文件时设置。 (这是因为 DBM 文件在磁​​盘上的布局方式。)创建 DBM 文件后,num_txns 值将从文件中读取并在调用 时被忽略新()。因此,一旦您将调用更改为指定 num_txns,除非您还使用了新的 DBM 文件,否则它将无济于事。

虽然我不能在不显着改变 DBM 文件结构的工作方式的情况下改变这种行为(这可能是个好主意,但这是一项艰巨的任务),你应该得到警告并且应该有更好的文档。我打开了https://github.com/robkinyon/dbm-deep/issues/12跟踪此问题及其修复。

关于database - DBM::Deep:交易问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5126182/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com