【问题标题】:AS400 DB2 SQL7008 : Table name not valid for operations when inserting a record via Spring BootAS400 DB2 SQL7008:通过 Spring Boot 插入记录时,表名对操作无效
【发布时间】:2021-06-19 06:17:11
【问题描述】:

我们有直接由 DB2 中的 OS/400 命令创建的模式/库。因此,如果我们要新建,则默认情况下不会为任何物理文件(表)启用日记功能。我们正在使用像 liquibase 这样的数据库迁移工具来进行所有数据库更改,例如在 Spring Boot 中创建表/视图。在尝试插入或更新时,我收到错误“java.sql.SQLException: [SQL7008] X in TABLE_NAME not valid for operation”。此错误是由于未通过 liquibase 对新创建的表进行日志记录。现在,我正在尝试找到以下可能性(如果有)

  1. 是否有可能在 OS/400 中创建的 DB2 库 9 下创建表 (SQL),以便在插入或更新时不需要日志记录?
  2. 是否有可能通过 Java/Spring Boot 在表上创建日志?
  3. 或者有什么建议,而不是每次都在 DB2 端记录表?

请给你的cmets

【问题讨论】:

    标签: java sql spring-boot db2 ibm-midrange


    【解决方案1】:

    当使用提交控制(事务隔离)时,需要对表进行日志记录。

    你有两个选择:

    1. 关闭承诺控制
    2. 为表启用日志记录

    对于选项 1,您可以包括
    transaction isolation=none;
    在连接字符串中,查看this question了解更多详情

    对于选项 2,如果您使用 SQL CREATE SCHEMACREATE TABLE 命令创建库和文件,则会自动记录表。

    您还可以在通过创建库 (CRTLIB) 命令创建库后使用Start Journal Library (STRJRNLIB) 命令。此后,当您在库中创建表或物理文件时,它将被自动记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-13
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 2020-06-20
      • 2022-01-28
      相关资源
      最近更新 更多