iSeries/IBMDB2I 上的 MySQL 表

标签 mysql db2 zend-db ibm-midrange iseries-navigator

我们正在使用 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/

相关文章:

linux - 使用 Tableau Desktop 连接到 IBM DB2 时出错?

zend-framework - Zend Framework 关系 - 在 findManyToManyRowset() 中定义列名?

php - 同一台机器上不同用户的多个MySQL实例

php - 制定一个类似 cron 的时间表

sql - 在 SQL 中,如何为表的 future INSERT 语句添加约束?

sql - 插入后为当前时间戳更新创建触发器

mysql - 从 Zend Framework 中的 2 个或更多相关表中获取值

php - 向bjyauthorize添加守卫时出现白屏

Python-写入MySQL

php - Laravel 单个 Controller 与多个 Controller 以及数据库行与列