我们的 Perl 应用程序编译为 exe,执行以下操作:
问题:最近管理员在服务器上更改了密码,新密码包含“;” (分号)字符。这使得 Perl 应用程序在尝试连接 DB2 数据库时总是失败。 因此,当 shell 脚本工作正常、win32 应用程序工作正常、.net 组件使用新密码工作正常时,看起来有点奇怪。但只有这个 Perl 可执行文件总是无法连接 db2 db。
我做了一个小实验 - 在本地临时环境中设置相同的密码,我看到了完全相同的效果 - shell 脚本和 win32 应用程序工作正常,但只有 Perl 应用程序失败。 然后我用“-”替换了密码中的分号,现在 Perl 应用程序可以正常工作(所有其他应用程序和脚本也可以使用任何密码值正常工作)。 因此,看起来问题正是出在“;”上。 Perl 应用程序密码中的字符!
有关 Perl 应用程序的信息:
请注意:我向 Perl 应用程序添加了调试输出,并且确认传递到 DBI-connect 调用中的密码字符串 100% 有效。因此,带分号的值已从 ini 文件正确加载,并且似乎在 DBI-connect 内部的某处失败。
仅供参考: 用于连接数据库的一段代码:
$pdbh = DBI->connect($dsn, $init::user, $init::passwd);
我们收到的错误消息:
DBI connect('Txxxx','build',...) failed: [IBM][CLI Driver] SQL30082N Security processing failed with reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=08001
问题是:
DB2 文档 说 DB2 密码中不能有分号。