我们有由 DB2 中的 OS/400 命令直接创建的模式/库。因此,如果我们新创建任何物理文件(表),默认情况下不会启用日志功能。我们使用像 liquibase 这样的数据库迁移工具来进行所有数据库更改,例如在 Spring Boot 中创建表/ View 。在尝试插入或更新时,我收到错误“java.sql.SQLException:TABLE_NAME 中的 [SQL7008] X 对操作无效”。此错误是由于未通过 liquibase 在新创建的表上完成日志记录所致。现在,我正在尝试寻找以下可能性(如果有)
- 是否有可能在 OS/400 中创建的 DB2 库 9 下创建表 (SQL),以便在插入或更新时不需要日志记录?
- 是否可以通过 Java/Spring Boot 在表上创建日志?
- 或者有什么建议,而不是每次都在 DB2 端记录表?
请提出您的意见
最佳答案
当使用 promise 控制(事务隔离)时,需要对表进行日志记录。
您有两个选择:
- 关闭 promise 控制
- 打开表的日志功能
对于选项 1,您可以包含
事务隔离=none;
在连接字符串中,请参阅 this question了解更多详情
对于选项 2,如果您使用 SQL CREATE SCHEMA
和 CREATE TABLE
命令来创建库和文件,则表将自动记录。
您还可以使用Start Journal Library (STRJRNLIB)通过创建库 (CRTLIB) 命令创建库后的命令。此后,当您在库中创建表或物理文件时,它将自动记录。
关于java - AS400 DB2 SQL7008 : Table name not valid for operations when inserting a record via Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66748828/