根据模式定义,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
答案 0 :(得分:1)
实际上DBUnit确实提到过这个。
这是DatabaseConnection
构造函数
... schema - 数据库架构。 请注意,架构名称是大小写 敏感。这是必要的,因为模式具有相同的名称但是 不同的案例可以在一个数据库中共存。 ......
我想DBUnit开发人员更正了架构名称案例,以避免此行为可能导致的问题。
DatabaseConnection
是指定的所有其他数据库DatabaseConnection
,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”