问题标签 [ibm-db2]

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 回答
551 浏览

php - 在 Linux 系统上的 xampp1.7.1 上安装 IBM-DB2 失败

我正在尝试在我的 lampp 服务器上安装 ibm-db2 驱动程序,但出现此错误:

0 投票
1 回答
889 浏览

php - 教义 2 - IBM DB2

我在使用 Doctrine 2 映射 DB2 表时遇到问题。应用程序存在很长时间,出于奇怪的原因,在某些列名前添加了一个“£”特殊字符。

例如:£ADRB1

在检查文档时,发现这是 Doctrine 不太喜欢的东西。顺便说一句,连接是通过 ODBC 驱动程序进行的:/ 我无法更改。

实体列是这样配置的:

错误是

SQLSTATE[HY090]:无效的字符串或缓冲区长度:0 [IBM][System i Access ODBC 驱动程序]无效的字符串或缓冲区长度。(SQLPrepare[0] 在 /patched-php-src-5.5.7/php-5.5.7/ext/pdo_odbc/odbc_driver.c:206)

尝试使用简单的 queryBuilder 获取结果时。

有没有可能让它与 Doctrine 2 一起使用?

非常感谢 !

0 投票
1 回答
394 浏览

sql - 不包括时间段的 SQL 驻留计算

我目前正在尝试重新创建一个手动报告,该报告为和活动创建一个“老化”列,但从计算中排除非工作时间。这是否可以创建,我将如何在 T-SQL 中进行(SSMS 2014 或使用和 odbc 连接到 db2),我有中等水平的经验,但找不到有关此类计算的任何信息。例子 :

但是,我需要计算排除 22:00 之后或 06:00 之前和周末的任何时间,因此“老化”将读取为 1 小时。

我真的希望你能帮忙!!

0 投票
1 回答
133 浏览

mysql - 之间添加会加快我的 SQL 查询速度吗?

假设我有一个包含 10M enries 的表,当我有这个查询时:

需要很长时间才能完成。如果我知道 column_name 将具有给定的范围,并将我的查询拆分为不同的查询,其中每个查询如下所示:

我设法让它反应更快。例如,通过检查时间,如果将其拆分为 10 个查询,则每个查询的响应速度快 10 倍。

所以,我想,施加这个范围会让我的查询更快。

但是,在另一个表上,具有相似的键和列,情况并非如此。无论我是否有两者之间的时间,都需要同样的时间。

需要注意的一些事情是:

  • 第一个 DB 是 SQL,第二个是 IBM DB
  • 在第一种情况下,时间由我执行查询的 UI 工具测量,第二次在 unix 中按时间测量。
  • 我不是在比较时间,我只是对使用 between 是否可以减少我的查询时间感兴趣?
  • column_name 不是主键,但它是主键的一部分(主键在多个列上)

所以,我的问题是,是这种情况还是真的取决于?'between' 会减少查询时间吗?

0 投票
1 回答
131 浏览

sql - DB : perform an update query after a fetch one inside a transaction

I am working on an IBM DB, but I think the concepts are pretty much the same.

I want to fetch a single line, return these data (or save them into variables let's say) and update some fields of that specific row. There might be a number of instance who try to perform that query in the same time, and therefore we need the operation of fetching to be atomic.

Each row has a field called pending, init to FALSE. When one instance fetches this row, this is set to TRUE (that's the update I want to do). Reason that I need it too be atomic, is that my query fetches the first row of the table, where pending is FALSE.

In pseudocode I have something like this :

Don't worry about the syntax, they are macros and once executed on its own they work. I am guessing the problem is on the second query but why?

  • Should I commit first and then perform the second query?
  • If yes, then how can I ensure that there will be no other instance reading the same row before I update it?

I guess this doesn't have to do with the DB I am using.

If I comment the second one, code works. If I execute the second one stand alone, it works as well.

0 投票
0 回答
314 浏览

database - DB2 上删除触发器导致死锁

当试图在父表上运行删除查询时,我被锁定了。以下是表结构,执行“DELETE FROM PARENT WHERE PARENT_ID = 1;”会造成死锁 -

------------------创建相关表--------------

------------------------在表上创建索引------------------------ ------

------------------------------创建触发器表------ ------------

---------------插入记录------------------ ------------

0 投票
0 回答
153 浏览

ibm-db2 - 如何将 1 纳秒添加到时间戳

如何将 1 纳秒添加到时间戳。

我正在这样做——

但这对我没有帮助。

有人可以帮我吗?

0 投票
1 回答
1034 浏览

php - 如果查询成功,如何捕获 db2_fetch_assoc() 生成的错误?

我正在使用 DB2 for IBM i(一个 iSeries (AS/400)),在 Zend Server 8.0.2 上使用 PHP 5.6.5 和 ibm_db2 驱动程序。

我遇到了一个实例,其中包含别名为名称的子选择的视图可能会或可能不会返回多行。我没有创建视图,我理解错误并且可以纠正它。奇怪的是,在 PHP 中,错误不会在 db2_exec() 上引发,而是在 db2_fetch_assoc() 上引发。我开始研究它,但找不到优雅地检测 db2_fetch_assoc() 生成的错误的方法。它在 Zend 错误日志中记录为“db2_fetch_assoc(): Fetch Failure”,E_WARNING 状态。

db2_stmt_error()并且db2_stmt_errormsg()只返回与 、 和 相关db2_exec()db2_execute()错误db2_prepare()。我什至尝试使用类似的东西:

并且它不会注册为异常。

我能想到的最好方法是发出初步查询以获取应返回的行数。然后使用这样的 for 循环:

有谁知道优雅地检测、跟踪或处理此类实例的任何其他方法?

EDIT1: 我设法在这里找到值得一提的东西:PHP:如何优雅地管理错误? 这个答案描述了当警告发生时如何强制异常(这是我从 中得到的db2_fetch_assoc())。不利的一面是,如果没有发现任何警告,都会导致页面执行停止。

我正在考虑的想法是将我的整个页面包装在一个不执行任何操作的try-catch子句中catch(比如包含try{在页眉包含和}catch(Exception $exc){}页脚包含中)。这将允许页面执行,并且由于try-catch允许嵌套子句,我仍然可以像往常一样使用 try-catch。不过好像很脏。

EDIT2: 只是澄清一下,我并不是想弄清楚我遇到了什么错误或如何纠正它 - 我已经知道它是什么以及如何纠正它。但是为了记录,我得到的错误是这里SQL0811定义的。我想弄清楚的是如何检测并优雅地处理由db2_fetch_assoc(). 原因是因为如果我没有检测到它,那么提取过程将在第一个受影响的记录上抢先结束,但页面将呈现好像一切都很好。因此,对于未来,我希望有一个安全措施来检测这些情况,而不是在几个月后意识到某些事情无法正常工作。不幸的是,我在第一次编辑中发布的次要解决方案不是一个可行的解决方案,因为它真正报告的只是发生了一次提取失败 - 与失败的原因无关。这是一些东西,但不多。理想情况下,我想有一种方法可以获取 SQL 状态代码或其他东西(对于我的错误,可能是以下任何一个:SQL0811、-811、21000,它们在上面的链接中定义)。

此外,我无法弄清楚为什么 SQL 错误仅被视为 php.ini 中的 E_WARNING。对我来说似乎有点奇怪,但我在 iNavigator 中得到了相同的行为(即,它仅在您到达受影响的行时才会死亡)但不是绿屏(这会在查询执行时引发错误)。所以它必须与数据库驱动程序以及它们如何处理这个有关。

0 投票
1 回答
250 浏览

sql - 在 IBM DB2 中选择列的子集

我无法对 IBM DB2 中数据库的列子集执行选择查询。

这行得通。但

不起作用。这是屏幕截图。在此处输入图像描述

0 投票
0 回答
1042 浏览

sql - DB2 中的 UNNEST 函数引发错误

我正在研究 DB2 数据库并使用 TOAD 执行以下语句。STRINGARRAY 已在 MYSCHEMA 中创建为 Arraytype。

此语句引发错误,提示“SQL0104N 在 ..... 之后发现了意外的令牌“UNNEST””

我的实际意图是在 where 条件的 IN 子句中传递 arraylist。我正在尝试这个 select 语句来测试 UNNEST 函数的使用。

我的最终查询将如下所示:

请建议我如何获得这项工作。先感谢您!!