- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在生产环境中运行的稳定的、基于网络的、单线程/进程的 perl 应用程序开始间歇性地抛出此错误,并且仅在系统负载较重的情况下。我们无法确定根本原因。
Usage: DBD::Pg::db::DESTROY(dbh) during global destruction
任何人都可以对此错误提供任何解释吗?当 Perl 在关闭前进行清理时,在没有参数(self?)的情况下调用 DESTROY 时,它似乎是从 Pg.sx 中抛出的。 (我通过谷歌在旧源代码中看到了这条消息,但在我们的版本中没有。)我们的环境:
最佳答案
这是黑暗中的一张照片。
DBI 数据库句柄通常像任何其他对象一样被销毁 - 当没有引用它们时。但是,事情可以防止句柄被自然破坏:
发生这种情况时,该对象作为“全局销毁”的一部分被销毁,这基本上只是取消所有内容的定义并实际上以随机顺序调用 DESTROY
。这可能是导致您出现虚假错误的原因。
首先,您可以尝试在脚本的开头和结尾枚举您的数据库句柄,看看最后是否还有任何句柄在使用中。参见 this code snippet :
sub show_child_handles {
my ($h, $level) = @_;
printf "%sh %s %s\n", $h->{Type}, "\t" x $level, $h;
show_child_handles($_, $level + 1)
for (grep { defined } @{$h->{ChildHandles}});
}
my %drivers = DBI->installed_drivers();
show_child_handles($_, 0) for (values %drivers);
如果您不确定为什么该对象仍在使用中,您可以使用 Devel::Cycle在一些大数据结构上找到它们。
您还可以找到 DBI 的 tracing functionality有用。在运行脚本之前导出 DBI_TRACE=2
,每次创建或销毁句柄时它都会记录下来。
关于Perl 死于 : "Usage: DBD::Pg::db::DESTROY(dbh) during global destruction",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15030230/
我正在尝试在 Ubuntu 12.04 上运行生物信息学工具 OrthoMCL。此工具需要一个 MySQL 数据库来进行数据处理。我的 SQL 数据库运行良好,版本为 5.5.34。 OrthoMCL
安装信息: Using DBI 1.608 (for perl 5.008009 on x86_64-linux) installed in /usr/local/lib/perl5/site_per
当尝试运行从 PHP 网页创建新 oracle 数据库的 perl 脚本时,出现错误。 我的 PHP 页面托管在 linux 服务器 (centos7) 更新了以下环境变量: export ORACL
在http://kobesearch.cpan.org/htdocs/DBD-mysql/DBD/mysql.pm.html有对 ODBC 的某些引用,但 afaik DBD::mysql 在连接堆栈
因为使用 DBD::mysql 的类似语句似乎工作正常,当使用 DBD::SQLite 时,我在 HAVING 子句中使用整数占位符的错误在哪里?作为 DBI 驱动程序? #!/usr/bin/per
我写了下面的代码: $dbh = DBI->connect('dbi:SQLite:mysqlite.db', "", "") || die "Cannot connect: $DBI::errstr
#!/usr/bin/env perl use warnings; use strict; use DBI; my $dbh = DBI->connect( "DBI:CSV:", '', '', {
我尝试了 3 种不同的方法来将多行(超过 500 行)插入到 SQLite 表中。与直觉相反,下面的方法 3 是最快的。我本以为方法 2 是最快的,因为它使用“准备好的”语句句柄。但是我的第三种方法—
有人可以指导我如何安装 Perl DBD::Oracle模块? 这是我到目前为止所做的: 平台:RHEL 5.8 64 位 已安装 Perl DBI 包 安装了适用于 Linux 64 位的 Orac
我试图在 Mac OS 上运行 Perl DBI 并不断遇到此错误: install_driver(mysql) failed: Can't load '/Library/Perl/5.18/darw
我很难让手动事务按照 DBD::Pg 中的记录工作,或者我只是误解了所述文档。 我的理解是,如果我想手动管理事务,我应该关闭 AutoCommit。 $dbh->{AutoCommit} = 0; $
为什么行 "$rc = $dbh->func( 'dropdb', $dbname, 'admin' );"删除数据库 db_test_2? #!/usr/bin/perl use warnings;
我正在尝试使用 DBD::Mock测试使用数据库的代码。到目前为止,正常的 SQL 查询工作得很好,但是我对如何测试调用存储过程的代码有些不知所措。使用 DBD::Mock::Session->new
我想通过 Perl 连接到 Oracle 数据库。为此,我尝试使用以下命令从 CPAN 安装 DBD::Oracle: [root@localhost Admin]# cpan DBD::Oracle
我曾尝试在 Linux 和 Windows 上使用 DBD::Advantage,但没有成功。 Windows 版本附带了一个看似完整的安装程序,但它留下了 DBD-Advantage-8.10.ta
我正在尝试使用带有 DBI 和 DBD::CSV 的德式 CSV 文件。这反过来又使用 Text::CSV 来解析文件。我想使用 SQL 查询该文件中的数据。 我们先来看看文件。它由分号( ; )分隔
我有两个疑问 当我运行以下 perl 脚本时,我收到以下错误 Unable to connect: ORA-12154: TNS:could not resolve the connect ident
有人可以解释一下 DBI 和 DBD 到底是什么吗?什么时候应该使用其中一种以及使用一种的好处。 最佳答案 DBI 是数据库访问库,而 DBD 是 DBI 用来访问特定数据库的“驱动程序”(例如,一个
在写我的问题时(如何:插入一个新条目,如果已经存在,请更新它),我在Related Questions中找到了一些答案: $sql = "INSERT OR REPLACE INTO $table
我并行使用 SQLite 数据库。主要用于阅读——这意味着一切都很好。但也用于写入和删除表格。然后突然我在随机时间得到这个(这表明一个竞争条件 - 这是预期并行运行的东西): Error: near
我是一名优秀的程序员,十分优秀!