问题标签 [dbd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1206 浏览

perl - 使用 DBD::Pg 的异步查询失败:在前一个异步查询完成之前无法执行

我正在使用带有股票 perl v5.8.8 的 CentOS 5.5 Linux(与 Redhat 5.5 相同)并通过 CPAN shell 安装了 DBD-Pg-2.17.1,我正在使用 postgresql-server-8.4.5-1PGDG.rhel5 和朋友.

我准备了一个简单的测试用例来演示我的问题 - 它列在底部。

我的代码工作正常,当我删除{pg_async => PG_ASYNC}

我的背景是,我有一个小型 Facebook 游戏,它作为具有 IO::Poll 的非分叉 Unix 守护进程运行。我想为玩家添加一些统计信息,但我不想限制我的轮询循环,所以我想主要 异步发送 INSERT/UPDATE 命令,并且我不需要来自数据库的任何返回值 - 因为对于阅读/显示统计数据,我将有单独的网络脚本。

令人惊讶的是,我收到错误消息 DBD::Pg::st execute failed: Cannot execute until previous async query has finished即使我没有使用PG_OLDQUERY_WAIT

这是我的代码(我的守护进程应该在连接丢失时重新连接到 PostgreSQL,这就是为什么我使用*_cached方法并且不会在eval { .... }异常时退出):

谢谢你,亚历克斯

0 投票
2 回答
8817 浏览

mysql - 如何使用 DBD::mysql 和 Perl 检查数据库行是否存在?

我正在使用 MySQL 数据库,需要在决定运行哪些查询之前检查一行是否已经存在。

我正在处理的表是这样的:

其中“playerid”是一个自动递增的数字,“nickname”是唯一的。

我尝试了一些使用 COUNT、COALESCE、fetch->rows 等的查询,但一无所获。我已经看到了这个问题,但无法解决任何问题。

0 投票
2 回答
2125 浏览

sql-server - 使用 DBI 和 DBD 抑制连接错误:ODBC SQL Server Native Client 10.0

编写脚本从表中获取 SQL Server 实例名称,然后尝试连接到这些实例中的每一个以提取数据库配置信息。涉及的所有数据库实例都是 SQL Server 的某个版本。如果连接失败(由于密码错误、实例关闭等),目的是打印用户定义的错误消息(“无法连接到 $inst,正在跳过。”)并继续浏览列表。我无法抑制来自 ODBC (SQL Server Native Client 10.0) 的默认错误消息。

尝试像这样连接:

我的(可能不正确)理解 PrintError => 0 应该抑制错误消息,如果连接方法失败,RaiseError => 1 将导致 DBI 死机,此时我可以检查 $@ 的错误并打印用户-定义的消息。我还查看了 HandleError 属性,但没有取得任何成功。

这是一个完全不现实的场景,还是我正在使用的 ODBC 驱动程序的结果?

根据 bohica 的建议,工作代码如下所示:

用户名和密码已从连接字符串中移出,并作为单独的参数传递给 DBI 连接方法。

0 投票
3 回答
672 浏览

perl - 如何使用 perl 访问两个具有不同版本(8i 和 9)的 Oracle 数据库?

我目前正在使用 perl 模块 DBI (1.613) 和 DBD::Oracle (1.26) 访问 Oracle 数据库版本 9i (9.2.0.8.0)。该项目的当前范围现在要求我访问版本 8i (8.1.7.4.0) 的 Oracle 数据库,并且根据DBD::Oracle 项目,我只能使用 DBD::Oracle 版本 1.20 访问第二个数据库或以下。

我知道我可以使用 DBD 版本 1.20 来访问两个数据库,但我想知道是否可以安装两个版本的 DBD 模块并为每个数据库使用可接受的版本(不太容易出错)。

0 投票
6 回答
6587 浏览

mysql - OSX v10.6.6 上 DBD::MySQL 的安装错误

我正在尝试让 DBD::MySQL 在 Snow Leopard (v10.6.6) 上工作。操作系统自带的默认 Perl 版本是 v5.10.0。由于我已经阅读了 64 位版本,因此我继续下载并安装了 64 位版本的 MySQL (mysql-5.5.8-osx10.6-x86_64)。

安装和设置 MySQL 很顺利,这是我的配置和版本号供参考

我使用 CPAN 下载 DBI 和 DBD::MySQL 驱动程序。我然后:

  • 安装的 DBI
  • 设置 Makefile.PL
  • 从命令行运行make命令

Makefile.PL 表示它将使用以下设置进行编译和测试:

一切似乎都很好,直到我尝试运行make test

它失败了,因为它似乎找不到 DBD 的 mysql.bundle。有没有人遇到过这个问题?或者可以指出我下一步要尝试什么的正确方向?我的新工作需要 DBI/DBD::MySQL,我正在努力寻找解决方案。

提前谢谢了。

0 投票
1 回答
2940 浏览

perl - Perl、DBD::Oracle 和 Oracle 10g 的字符集问题

在我们的 Oracle 10g 数据库中,基本 ASCII 集之外的字符显示为倒置的问号,我们遇到了问题。

我有以下脚本来加载一些测试数据。该脚本在 Komodo IDE 的远程 UNIX 服务器上保存为 Latin-1/ISO-8859-1:

它加载到的数据库是具有以下参数的 Oracle 10g 数据库:

测试表上的单列是 VARCHAR2(255) 类型。

尽管花了一整天的时间阅读这些问题,但我真的不知道如何解决/诊断确切的问题。

在执行 SQL 字符串之前,我已经尝试过使用和不使用 Encode 对 SQL 字符串进行编码。

谢谢

0 投票
5 回答
4872 浏览

perl - 如何在 OSX Snow Leopard 10.6 上安装 perl DBD::Oracle

我正在尝试从运行 OSX 10.6 雪豹的英特尔 mac 连接到远程系统上的 Oracle 10.2.0.4。我尝试使用 perl CPAN 安装 DBD::Oracle(DBI 工作正常),但出现编译错误。有人可以提供一个易于遵循的指南吗?

0 投票
2 回答
8247 浏览

perl - perl 中的 DBD::Oracle 和 DBI 错误

我在这里遇到了一个关于 perl 和 DBI 模块的奇怪问题。有时我可以成功获取查询,但有时,当我添加一行与数据库访问或类似内容远程相关的代码时,我收到一条错误消息:

DBD::Oracle::st fetchrow_array failed: ERROR no statement execution (也许你需要先调用 execute) [for Statement "select * from (...)"] at script.pl 第 18 行。

我使用 sqlplus 验证我的选择命令在这里没有问题(当然,这就是为什么我说脚本有时可以工作!)

如果我在 perl 脚本中的 select 命令之后添加了一个分号,我会收到另一个错误消息:

DBD::Oracle::db 准备失败:ORA-00911:无效字符(DBD 错误:错误可能在 'select * from (...)<*>;' 中字符 970 处的 <*> 指示符附近)[for Statement" select * from (...);"] 在 script.pl 第 13 行。

谁能告诉我这里发生了什么?是因为 sql 命令太长(~900 个字符)吗?

0 投票
1 回答
385 浏览

perl - 如何伪造 perl 模块以进行依赖?

我正在使用的外部 Perl 库有一个依赖项(DBD::mysql),我不会在我的应用程序(DBD::SQLite)中使用它,所以我希望系统只是假装依赖项在那里,即使它是假的”。

我可以只创建一个空的 DBD::mysql.pm 模块来编译还是有更直接的方法来做到这一点?

0 投票
3 回答
4379 浏览

sql - 通过 Perl 连接到 Teradata

有没有人在这方面取得任何成功?网上没有很多参考资料,我已经用尽了谷歌上的所有相关结果。这是我的脚本:

错误信息:

被注释掉的两行是我之前尝试连接到数据库的无果而终的结果。

更新:这是我之前使用 DBD 模块所做的努力。

错误:


第二次尝试:

错误:


第三...

.odbc.ini

错误:


odbcinst.ini