java - AS400 DB2 SQL7008 : Table name not valid for operations when inserting a record via Spring Boot

标签 java sql spring-boot db2 ibm-midrange

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

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

请提出您的意见

最佳答案

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

您有两个选择:

  1. 关闭 promise 控制
  2. 打开表的日志功能

对于选项 1,您可以包含
事务隔离=none;
在连接字符串中,请参阅 this question了解更多详情

对于选项 2,如果您使用 SQL CREATE SCHEMACREATE 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/

相关文章:

java - 我如何使用根目录 System.getProperty ("user.home")

java - 在二维数组中的特定索引处添加列而不删除任何其他列

java - GridGain 模板搜索

mysql - 将两列相乘并显示在新的一列中

Java Spring启动: Reload config without spring cloud config server

java - 可以存储 JMeter 请求的结果并使用它吗?

python - mysql在sql插入语句中写入变量

java - 如何在不使用 SQLiteOpenHelper 内容提供程序插入数据的情况下获取 URI? (安卓)

java - Spring boot + OAuth2 安全和请求过滤器

java - 为什么使用 Spring Mail 会丢失附件? ( Kotlin )