Win 64 Strawberry Perl DBI 无错误报告错误仍未修复?

2024-02-21

自 2011 年以来一直在处理这个问题。通常能够解决它。现在出现了一种情况,我确实需要能够处理错误,我在想,人们已经知道这个问题很多年了,这似乎是修复列表中最重要的事情,但是最新的 DBI 升级而且问题还没有解决。有没有人找到解决方法,或者知道如何破解库并让 DBI::errstr 在出现错误时携带一个值?

这是我的代码(是的,我知道空白根密码的问题):

use strict;
use DBI;
use DBD::mysql;
use Data::Dumper;

my $platform = "mysql";
my $database = "test";
my $host = "localhost";
my $port = "3306";
my $user = "root";
my $pw = "";
my $dsn;

$dsn = "dbi:mysql:$database:$host:$port";

my $DBI_connect = DBI->connect($dsn, $user, $pw, {RaiseError => 1,PrintError=>1}) or die "$DBI::errstr\n"; 

my $sql_str = 'INSERT INTO test_tablexx (\'xxx) VALUES (blah)';

my $DBI_query_handle = $DBI_connect->prepare( $sql_str ) or die "Can't prepare SQL statement: $DBI::errstr\n";

my $return = $DBI_query_handle->execute() or warn "$DBI::errstr\n";

print "sys arry".Dumper $@."\n";
print "err: ".$DBI_query_handle->err."\n";
print "errstr: ".$DBI_query_handle->errstr."\n";
print "state: ".$DBI_query_handle->state."\n";

print "err: ".$DBI_connect->err."\n";
print "errstr: ".$DBI_connect->errstr."\n";
print "state: ".$DBI_connect->state."\n";
print Dumper $DBI_query_handle;

print "\n\n-------------------------------------------------------------------\n\n";

my  $hash = DBI->installed_versions;
print Dumper $hash;

现在,该表无效,该列中间有引号,并且该值是不带引号的字符串。应该像圣诞树一样点亮错误处理。

如果我将执行语句更改为“$DBI::errstr\n”,它确实会出现错误;它会死,但根本没有任何消息。

但结果是这样的:

sys arry$VAR1 = '
';
err:
errstr:
state:
err:
errstr:
state:
$VAR1 = bless( {}, 'DBI::st' );

-------------------------------------------------------------------

$VAR1 = {
     'DBD::SQLite' => '1.37',
     'DBD::ExampleP' => '12.014311',
     'DBD::Sponge' => '12.010003',
     'DBD::Pg' => bless( {
                           'original' => '2.19.3',
                           'qv' => 1,
                           'version' => [
                                          2,
                                          19,
                                          3
                                        ]
                         }, 'version' ),
     'DBD::Gofer' => '0.015327',
     'DBD::DBM' => '0.08',
     'DBD::mysql' => '4.022',
     'DBD::ADO' => '2.99',
     'DBD::ODBC' => '1.41',
     'DBI' => '1.631',
     'DBD::File' => '0.42'
   };

最后一点是版本信息的转储,因此你们都可以看到我的 DBI 安装是最新的。

现在,当我将数据库更改为不存在的内容时,例如: my $database = "testxxx",它确实会引发错误:

DBI connect('testxx:localhost:3306','root',...) failed: Unknown database 'testxx' at ../sql_tester.pl line 17.

最后一点信息给您,当我转储 $DBI::lasth 时,我可以看到错误方法是 undef:

print Dumper $DBI::lasth;

$VAR1 = bless( {
            'FetchHashKeyName' => 'NAME',
            'TraceLevel' => 0,
            'ImplementorClass' => 'DBD::mysql::db',
            'dbi_imp_data' => undef,
            'State' => \undef,
            'Username' => 'root',
            'Errstr' => \undef,
            'ChildHandles' => [
                                bless( {}, 'DBI::st' )
                              ],
            'Driver' => bless( {
                                 'Attribution' => 'DBD::mysql by Patrick Galbraith',
                                 'FetchHashKeyName' => 'NAME',
                                 'TraceLevel' => 0,
                                 'ImplementorClass' => 'DBD::mysql::dr',
                                 'State' => \undef,
                                 'Version' => '4.022',
                                 'Errstr' => \undef,
                                 'ChildHandles' => [
                                                     bless( {}, 'DBI::db' )
                                                   ],
                                 'Name' => 'mysql',
                                 'Err' => \undef
                               }, 'DBI::dr' ),
            'Statement' => 'INSERT INTO test_tablexx (\'xxx) VALUES (blah)',
            'Name' => 'test:localhost:3306',
            'dbi_connect_closure' => sub { "DUMMY" },
            'Err' => \undef
          }, 'DBI::db' );

因此,请 SO 的好心人,当编程最重要的原则之一 - 错误处理 - 在我的程序的核心模块中不起作用时,我该怎么办?


根据DBD::mysql 变更日志 http://cpansearch.perl.org/src/CAPTTOFU/DBD-mysql-4.026/ChangeLog,此问题已在 v4.024(2013 年 9 月 17 日发布)中修复。您的输出显示您仅使用 v4.022,因此您需要升级DBD::mysql https://metacpan.org/pod/DBD%3a%3amysql。您可以找到详细说明问题的错误报告here https://rt.cpan.org/Public/Bug/Display.html?id=71047.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win 64 Strawberry Perl DBI 无错误报告错误仍未修复? 的相关文章

  • Perl 的 grep 函数如何与正则表达式一起使用?

    以下 grep 函数如何工作 什么作用 0o1Iil do chars grep 0o1Iil 0 9 A Z a z use Data Dumper print Dumper chars 在 chars中生成以下内容 VAR1 0 VAR
  • 如何在正则表达式中区分数字和ip地址?

    例如 如果我们查看 5 56 和 183 55 0 144 基本上 当你做这样的事情时 d d 它匹配 5 56 189 55 和 0 144 有没有办法通过正则表达式仅匹配数字而不匹配 ip 地址的部分 我尝试使用前瞻 但我不知道它应该是
  • Perl 中的全局变量、子程序变量问题

    如何将子程序变量值转移到另一个子程序变量中 我可以使用全局变量吗 sub foo my myvar Hello sub foo1 my myvar1 myvar how can I get the Hello from myvar 我尝试使
  • 如何在 Perl 脚本中包含另一个文件中的函数?

    这似乎是一个非常简单的问题 但不知何故 我的 Google Fu 失败了 在 Perl 中包含其他文件中的函数的语法是什么 我正在寻找类似C的东西 include blah h 我看到了使用 Perl 模块的选项 但这似乎需要对我当前的代码
  • 将相同匹配模式的连续 2 行放入单行中

    我想解析这组行 以便如果得到相同的模式 例如 lt email protected cdn cgi l email protection gt 在连续的行中 它应该以单行形式打印 并在两行之间使用 q2VDWKkY010407 222187
  • 如何轻松地将 Ajax、perl 和 JSON 结合使用?

    我正在尝试使用 Ajax 制作一个网页 Example 我创建了一个 Perl CGU 文件来触发一个简单的帖子 文件 test cgi name 托马斯 回复短信 你的名字是托马斯 我创建了一个可以使用该帖子的 html 文件 但随后页面
  • 如何在 perl 中合并两个数组,交替每个数组中的值

    假设我有 2 个如下所示的数组 a1 Vinay Raj harry b1 dude rock 合并后我想要这样的结果 Vinay dude Vinay rock Raj dude Raj rock harry dude harry roc
  • 如何将会话管理添加到简单的 Perl CGI 网页?

    我有一个简单的网页 到目前为止不需要任何登录 它是用 Perl CGI 编程的 我想知道添加会话支持以便获得登录信息的步骤 我不需要非常复杂的方法 因为网页非常简单 另外 我想要一些关于支持 Perl 会话所需的技术 库的建议 我在很多很多
  • 无法从日志文件中提取特定信息

    我这里有日志文件我想提取以下信息 想要提取十六进制值 如果该行有第二个括号 0 9 想要提取十进制值 首先转换为十六进制 然后提取 9 gt 0x09 想要提取负值 25 先转换为十六进制然后提取 例如 25 gt FFE7 gt 想要提取
  • Perl:测试输入阅读器?

    有没有一种方法可以使用标准 Test 等模块自动测试 Perl 程序是否正在读取输入 例如标准输入正确吗 例如 测试一个从 STDIN 读取两个整数并打印它们之和的程序 这不是 100 清楚你的意思 我会回答假设你想编写一个测试脚本来测试你
  • 在 Windows 7 中使用 ActivePerl @ARGV 为空

    我有以下 Perl 脚本 我正在尝试使用 ActivePerl 在 Windows 7 中运行它 c Perl64 bin perl exe w use strict my mp3splt exe c Program Files x86 m
  • 快速 Perl signint 处理程序

    收到 Ctrl C 时处理程序清理的最方便 最清晰的方法是什么 例如 当我的套接字服务器以这种方式被终止时 TCP 套接字永远不会关闭 我想要一个很好的衬里 我可以将其放在程序的顶部来设置 sigint 处理程序 或类似 atexit 的东
  • Perl 和 Selenium::远程::驱动程序

    再次编辑 我在弗吉尼亚州北部某处的 AWS 上有一台服务器 这是我的监控服务器 我从另一个状态 ssh 进入这个 Ubuntu 服务器来进行系统管理 我想在这台服务器上进行 Web 自动化测试 它将测试互联网上的 Web 应用程序 点击 U
  • 如何在 Perl 中循环访问类的所有方法?

    如何在 Perl 中循环访问一个类的所有方法 有没有关于 Perl 内省或反射的好的在线参考 Todd Gardner 使用 Moose 的建议很好 但他选择的示例代码并不是很有帮助 如果你正在检查一个非 Moose 使用类 你会这样做 u
  • 按值和键对哈希进行排序(按顺序)

    我正在寻找一种很好的方法来在 Perl 中先按值排序 然后再按键排序 Example my userids williams gt Marketing smith gt Research johnson gt Research jones
  • 从具有多行记录的文件中提取数据,将每个范围保存到单独的文件中

    我有一个看起来像这样的文件 TRANSACTION STARTED 020t CARD INSERTED 020tCARD 5845 DATE 01 02 16 TIME 05 45 52 05 46 26 GENAC 1 ARQC EXT
  • 如何在 Perl 中修改 Windows NTFS 权限?

    我在 Windows Server 2003 上使用 ActiveState Perl 我想在 Windows NTFS 分区上创建一个目录 然后授予 Windows NT 安全组对该文件夹的读取访问权限 这在 Perl 中可能吗 我必须使
  • 将 stdin/stdout 从执行进程重定向到 Perl 中的管道

    我试图让执行子进程中的 STDOUT STDERR 通过 Perl 中的管道返回到父进程 我见过的最接近我想做的事情是 http forums devshed com perl programming 6 exec and redirect
  • 为什么 Perl 的 LWP 给我的编码与原始网站不同?

    可以说我有这个代码 use strict use LWP qw get my content get http www msn co il print STDERR content 错误日志显示类似 xd7 x9c xd7 x94 xd7
  • 何时计划 (SELECT) 查询?

    在 PostgreSQL 中 什么时候计划 SELECT 查询 Is it 在报表准备时 或者 在处理 SELECT 开始时 或者 别的东西 我问的原因是 Stackoverflow 上有一个问题 相同的查询 两种不同的方式 性能截然不同

随机推荐

  • 从 nlohmann json 访问元素

    我的 JSON 文件类似于此 active false list1 A B C objList key1 value1 key2 0 1 现在使用 nlohmann json 我已经设法存储它 并且当我进行转储时jsonRootNode d
  • c# readonly DataGridView 与一个启用的单元格

    我有只读 datagridview 在某些特定情况下 我需要在双击行后启用一个单元格 使 readonly false 并将焦点放在当前行中的该特定单元格上 例如输入它 光标应该开始闪烁 I have private void dataGr
  • 检查文档状态 DocuSign

    如何检查文档是否已使用 DocuSign API 签名 是否存在可以让我了解文档状态的 API 服务 我尝试获取 已完成 文件夹中的所有对象 但响应不包含 documentId 并且我不知道每个对象是哪个文档 DocuSign 轨道接受者状
  • 有没有免费的库可以实现类似于MSMQ(Microsoft Message Queuing)的消息队列?

    我有兴趣使用一个免费库 该库具有类似于 MSMQ 的功能 可以在 win 表单应用程序中的 3 个应用程序域之间发送 接收消息 我只需要专用队列功能 没有公共队列或 AD 支持 请提供链接和一些优点 缺点 如果您认为需要更多积分来了解更详细
  • C语言中\n是多字符吗?

    我读到 n 由 CR 和 LF 组成 每个都有自己的 ASCII 代码 那么C中的 n是用单个字符表示还是多字符表示呢 Edit 请具体说明您的答案 而不是简单地说 是的 or 不 不是 在 C 程序中 它是一个字符 n 代表行尾 然而 某
  • JavaCV 录像机方向在纵向模式下不正确

    嗨 我正在使用https github com bytedeco javacv https github com bytedeco javacv 用于录制视频 使用横向模式时方向很好 但当我将方向更改为纵向模式时 视频旋转 90 度 任何人
  • 使用 NHibernate 时出错

    考虑到这个例子 https www hibernate org 362 html作为基本示例 我创建了该应用程序 但是当我执行该应用程序时出现以下错误 The ProxyFactoryFactory was not configured 使
  • 在 Bootstrap 4 中的模式中滚动下拉菜单

    我目前正在从 Bootstrap4 alpha 迁移到 Bootstrap4 stable 到目前为止 一切都很好 除了我的模态出现的这个问题 我在任何地方都使用下拉菜单 包括包含许多项目的下拉菜单 以前 滚动效果很好 现在它没有 当我滚动
  • 将 pandas 函数实现为 numpy 函数

    有没有办法可以转换xy mean使用 pandas 库计算的函数就像y mean功能 我发现 pandas 功能Y mean pd Series PC list rolling number mean dropna to numpy 比 n
  • 将字符串转换为 Uri

    如何在 Java Android 中将字符串转换为 Uri IE String myUrl http stackoverflow com myUri 您可以使用parse静态方法来自Uri import android net Uri Ur
  • 已知常微分方程的李亚普诺夫谱 - Python 3 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想用数值方法计算李亚普诺夫谱洛伦兹系统 https en wikipedia org wiki Lorenz syst
  • Azure 服务主体没有足够的权限来管理其他服务主体

    我可以使用 Azure 或从门户控制台使用以下命令创建服务主体az cli az ad sp create for rbac name myspuser password adfhrrreeuwrgwejdfgds 然后 我在订阅级别分配所
  • 如何设置“npm install”期间使用的环境变量?

    我们的合作网络非常封闭 所以正常的方法是 npm install email protected cdn cgi l email protection 不起作用 因为它被代理阻止 我们需要提供参数CYPRESS INSTALL BINARY
  • Pandas:每组最大值的索引

    我的熊猫数据框 df 看起来像这样 parameter1 parameter2 value 1 1 0 1 2 0 2 2 1 0 6 2 0 3 value是一个结果groupby parameter1 parameter2 mean 另
  • std::cin 在读取 EOF 并清除后不再读取

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在阅读以下内容std cin with a while循环结束时EOF被介绍 退出循环后 我调用std cin clear 使流恢复正常
  • 我们什么时候会在Spring中使用applicationContext.xml? [复制]

    这个问题在这里已经有答案了 为什么我们需要applicationContext xml在春天 我们在什么情况下会使用它 你有例子吗 有什么区别applicationContext xml and spring servlet xml 我们如
  • 在 Android 上获取正确的启动器图标大小

    我正在开发一个能够将快捷方式图标添加到主屏幕的应用程序 Android 平板电脑的正确图标大小是多少 或者更好地说 如何在运行时获取它 它似乎与上面写的不同this http developer android com guide prac
  • 改变div背景颜色一秒钟,然后在javascript中将其返回到原始颜色

    我想改变 div 的背景颜色一秒钟 然后将其返回到原始颜色 我正在制作西蒙游戏 不知道如何在一段时间内闪烁颜色 到目前为止我有这个 var red document getElementById redBox flashRed functi
  • Azure 存储 - 在 标记中使用私有容器中的 Blob

    我创建了 Azure 容器并将其设置为私有 该权限必须设置为 私有 因为只有登录用户才能查看该内容 但是 我打算在标签中使用 blob 当容器设置为私有时 这是不可能的 有没有解决的办法 或者还有其他人遇到同样的问题吗 我从 CodePle
  • Win 64 Strawberry Perl DBI 无错误报告错误仍未修复?

    自 2011 年以来一直在处理这个问题 通常能够解决它 现在出现了一种情况 我确实需要能够处理错误 我在想 人们已经知道这个问题很多年了 这似乎是修复列表中最重要的事情 但是最新的 DBI 升级而且问题还没有解决 有没有人找到解决方法 或者