如何设置 DB2 SQL ANSI 模式

Posted

技术标签:

【中文标题】如何设置 DB2 SQL ANSI 模式【英文标题】:How to set DB2 SQL ANSI Mode 【发布时间】:2014-09-23 02:06:37 【问题描述】:

我有一个在 Ubuntu Intel 64 位机器上开发的 php 项目。它使用 DB2 作为数据库。现在客户将其部署在 IBM I 系列服务器上。所以我给了他导出的 Schema(通过 db2look 命令)。

db2look -d MYDATABASE -a -e -o mydatabase.sql

但他在导入时遇到问题因为导出的模式有一些关键字在 DB2 IBM 版本上不支持。他指出octets 关键字。但肯定会有更多。所以他希望我们将架构转换为某种 mysql 或 ANSI 模式。但是我没有找到任何转换 DB2 模式或更改模式的教程。

我对 DB2 非常陌生,我所有的 DB 都只接触过 MySQL 数据库。如果有人对此有想法吗?

【问题讨论】:

你能给出错误的输出吗?您是从 db2 for I 导出,还是从任何其他类型的 DB2(即 luw)导出? "将我们的模式转换为某种 MySQL 模式" - 为什么您认为可以在 DB2 服务器上使用 MySQL 语法?而“MySQL 模式”远非“ANSI 模式”。 @a_horse_with_no_name,我理解,但客户建议使用 MySQL 或 ANSI 模式。我不知道这些模式是否存在以及如何启用它们。 @AngocA,那部分我不参与由于客户自己的技术团队导入了DB SQL文件并遇到问题,他只是告诉我们他因模式不同而遇到问题。他唯一提示的是 octets 可以在他的 IBM i 系列服务器中禁用。 @AngocA,关于你的第二个问题,我没有完全确认,但应该是 DB2 IBM 版本而不是 luw 版本,因为为什么那个客户强迫我们看到 db2 linux 版本与 db2 ibm 版本之间的差异.在本地开发机器上,我们已经在使用 luw 版本。 【参考方案1】:

IBM 有手册

IBM DB2 for i 移植指南 DB2 for Linux、UNIX 和 Windows 到 IBM i 平台 (2014 年 6 月更新)

http://www-304.ibm.com/partnerworld/wps/servlet/ContentHandler/servers/enable/site/db2_porting_i.html

您是否偶然将 Zend 用于您的 PHP?

IBM i 支持 Zend:http://www.zend.com/en/solutions/modernize-ibm-i

当 Oracle 放弃对 IBM i 的 MySQL 支持时,Zend 也弥补了这一不足http://www.zend.com/en/solutions/modernize-ibm-i/ibm-i-product/dbi

Zend 的 DBi 产品包括 IBMDB2I 存储引擎,允许 php/MySQL 应用程序在 IBM i 上运行并利用 DB2 for i 作为数据库。

【讨论】:

Zend Framework 2 中的应用。我不知道他们是否会在那里使用 Zend Server? 什么版本的 DB2 for i? (注意,IBM i OS 和 DB2 for i 的 OS 和 DB2 版本相同)根据我提到的移植手册,IBM 从 v6.1 开始添加不支持的语法和语句的容错;他们表示愿意接受可以忽略的语法样本。 之前的评论表明我是 7.2。

以上是关于如何设置 DB2 SQL ANSI 模式的主要内容,如果未能解决你的问题,请参考以下文章

sql = 和<>遵循的sql-92标准的设置SET ANSI_NULLS ON

MySQL中常用的SQL Mode

Db2:未反映对 SQL_COMPAT 全局变量设置的更改

如何在DB2数据库中运行模式文件

db2执行计划具体操作

sql trigerr将空字符串设置为字段而不是#db2 #mediqus