根据模式定义,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的通用超类,例如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”