php - MySQL 到 DB2 通过 ADOdb PHP

标签 php mysql db2 adodb

我正在尝试将一个小型 PHP 应用程序从 MySQL 移植到 DB2。该应用程序通过 ADOdb 连接到 MySQL 数据库。我成功地通过 ADOdb 连接到 DB2 数据库,但在执行 SQL 查询时却不太成功。需要修改查询以在要执行的表名周围包含引号 ("")。他们在 ADOdb 中有任何解决方法吗?修改每个查询有点乏味(这实际上首先违背了使用 ADOdb 的目的)。

谢谢!

最佳答案

在 DB2 中,默认情况下,模式、表和列名称不区分大小写。当您发表声明时:

create table myid.test (
   c1 int
   c2 int
);

DB2 将模式、表和列名折叠成大写。因此,如果查看系统目录,您会看到该表名为 MYID.TEST 并且包含列 C1 和 C2。

DB2 也将所有查询折叠成大写(默认情况下)。因此,当您查询此表时,以下语句是相同的:

从 myid.test 中选择 c1、c2

从 MYID.TEST 中选择 C1、c2

从 MyID.Test 中选择 c1、C2

但是,DB2 可以使用区分大小写的名称:如果您在定义中引用模式/表/列名称,那么 DB2 将使用准确的字符串:

   create table "MyID"."Test" (
      c1 int,
      "C2" int
   );

在这种情况下,您将在系统目录中看到大小写混合的架构/表/列名称。

这会带来不幸(和痛苦)的副作用,即要求您在所有查询、DML 和 DDL 中引用架构/表/列名称。

使用大小写混合的名称不是最佳做法。

最好的解决方案是重新创建不区分大小写名称的表(即不要将架构/表/列名称放在引号中。

这将消除您使用 ADODB 覆盖所有内容的需要。 ADODB 可能有一些解决方法,但其他任何人仍然会感到痛苦。

关于php - MySQL 到 DB2 通过 ADOdb PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5728680/

相关文章:

php - 引用类变量作为 PHP 函数中的默认参数

php - 在客户端和服务器之间建立安全连接

php - 使用join语句从两个表中删除,但出现错误

mysql - 这个mysql语法有什么作用

Python DB2 - 找不到符号

java - 在 Airflow 中设置 DB2

php - 如何捕获用 PHP exec 发出的命令的多行输出?

php - Yii $this->redirect() 在操作方法中不起作用

mysql - 从 mysql 中的字符串中获取哈希标签

java - DB2 控制中心中的操作是否有可能阻止 java 代码中的查询?