我们正在使用 zendDBi 数据库,并试图从现有的 DB2 表中设置一个 MySQL 表。使用此处找到的方法: http://wsip-174-79-32-155.ph.ph.cox.net/wiki/index.php/MySql/DB2StorageEngineDocument (在页面底部附近标题为“现有 IBM i DB2 表”的部分中)。
这适用于大多数表,但特别是对于一个表似乎不起作用。
我能够创建 MySQL 表并复制 FRM 文件,但是当我尝试通过 mysql 访问该表时出现错误 “从 IBMDB2I 收到错误 2102 '文件已更改,可能与 MySQL 表定义不兼容'”
我在这里读过一篇类似的文章: http://forums.zend.com/viewtopic.php?f=77&t=104778
但是没有创建 FID 文件。 (这确实适用于另一张 table )。到目前为止,这是我尝试过的:
- 检查 mysql frm 文件的文件权限
- 检查了 DB2 表的权限
- 在 MySQL 中使用“刷新表”命令
- 使用正确的标识号手动创建 FID 文件
- 在 my.conf 中将 IBMDB2I 设置为默认引擎
- 确保表格不包含分区小数字段
我很好奇接下来要尝试什么。
这是来自 iSeries Navigator 的原始表的 SQL 创建语句。如您所见,只有 2 种数据类型。
CREATE TABLE GB1555AFGD.Z1OCTLSP (
ZZSALE CHAR(10) NOT NULL DEFAULT '' ,
ZZAGRP CHAR(4) NOT NULL DEFAULT '' ,
ZZPCOD CHAR(1) NOT NULL DEFAULT '' ,
ZZDAMT DECIMAL(17, 4) NOT NULL DEFAULT 0 ,
ZZPPCT DECIMAL(5, 2) NOT NULL DEFAULT 0 ,
ZZBCHK DECIMAL(17, 4) NOT NULL DEFAULT 0 ,
ZZOLMT DECIMAL(17, 4) NOT NULL DEFAULT 0 ,
ZZOBJT DECIMAL(17, 4) NOT NULL DEFAULT 0 ,
ZZTCHK DECIMAL(17, 4) NOT NULL DEFAULT 0 ,
ZZMGID CHAR(10) NOT NULL DEFAULT '' ,
ZZMPCT DECIMAL(5, 2) NOT NULL DEFAULT 0 ,
ZZLSAL DECIMAL(17, 4) NOT NULL DEFAULT 0 ,
ZZBRNO CHAR(35) NOT NULL DEFAULT '' ,
ZZBNKA CHAR(17) NOT NULL DEFAULT '' ,
ZZDDTP CHAR(1) NOT NULL DEFAULT '' ,
ZZTXNO CHAR(3) NOT NULL DEFAULT '' ,
ZZSPM1 CHAR(60) NOT NULL DEFAULT '' ,
ZZSPM2 CHAR(60) NOT NULL DEFAULT '' ,
ZZSPM3 CHAR(60) NOT NULL DEFAULT '' ,
ZZSPM4 CHAR(60) NOT NULL DEFAULT '' ,
ZZROM CHAR(6) NOT NULL DEFAULT '' ,
ZZCKCD CHAR(1) NOT NULL DEFAULT '' ,
ZZFAXYN CHAR(1) NOT NULL DEFAULT '' ,
ZZPRNYN CHAR(1) NOT NULL DEFAULT '' ,
ZZFAX CHAR(35) NOT NULL DEFAULT '' ,
ZZTIME CHAR(8) NOT NULL DEFAULT '' ,
ZZTIMEC CHAR(1) NOT NULL DEFAULT '' ,
ZZEMLYN CHAR(1) NOT NULL DEFAULT '' ,
ZZEMAIL CHAR(60) NOT NULL DEFAULT '' ,
ZZRCAP CHAR(1) NOT NULL DEFAULT '' ) ;
我不确定这是否重要,但我遇到困难的表是在较旧的操作系统中创建的。目前我们使用的是 7.1,但是这些表可能是在 v3r2 或 v5r4 中创建的。所以也许缺少什么?
最佳答案
我知道我迟到了一年,但对于在这里搜索的其他人...这可能是 IBM i 7.1 中的 PTF 修复的问题。确保您应用了 PTF SI50864(如果可能,所有最新的 PTF 都在 http://www-01.ibm.com/support/docview.wss?uid=nas267d12878076e4827862574e2003c6d4a 中列出)
关于iSeries/IBMDB2I 上的 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785597/