gpt4 book ai didi

java - 更正了 dbunit 中的表名消息

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:22 25 4
gpt4 key购买 nike

dbunit 数据已根据模式定义使用小写表名填充。为什么每次都得到更正表警告,我为所有数据库(h2、mysql ..)运行脚本

[INFO] [dbunit:operation {execution: seed data}] 120 [main] INFO org.dbunit.database.DatabaseDataSet -
database name=H2
database version=1.2.128 (2010-01-30)
database major version=1
database minor version=2
jdbc driver name=H2 JDBC Driver
jdbc driver version=1.2.128 (2010-01-30)
jdbc driver major version=1
jdbc driver minor version=2

127 [main] INFO org.dbunit.util.SQLHelper - class org.dbunit.database.DatabaseTableMetaData. Corrected table name:
oldValue=user newValue=USER

最佳答案

实际上 DBUnit 确实提到了这一点。

这是DatabaseConnection构造函数的javadoc

... schema - the database schema. Note that the schema name is case sensitive. This is necessary because schemas with the same name but different case can coexist on one database. ...

我想 DBUnit 开发人员更正了架构名称的大小写以避免可能由此行为引起的问题。

DatabaseConnection 是指定DatabaseConnection 的所有其他数据库的通用父类(super class),例如H2DatabaseConnection

创建DatabaseConnection 时,DBUnit 将从jdbc 连接中检索有关数据库的元数据,顺便说一句,它是java.sql.DatabaseMetaData 的实现.

之后,DBUnit 将通过检查元数据来更正架构名称,这就是您始终收到日志消息的原因。

DBUnit 使用DatabaseMetaData 的以下方法进行检查

boolean storesUpperCaseIdentifiers() throws SQLException;
boolean storesLowerCaseIdentifiers() throws SQLException;

这里是H2 jdbc驱动的实现

public boolean storesUpperCaseIdentifiers() {
debugCodeCall("storesUpperCaseIdentifiers");
return true;
}

所以表“user”变成了“USER”

关于java - 更正了 dbunit 中的表名消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com