更正了dbunit中的表名消息

时间:2010-02-19 06:07:46

标签: java jdbc dbunit

根据模式定义,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

1 个答案:

答案 0 :(得分:1)

实际上DBUnit确实提到过这个。

这是DatabaseConnection构造函数

的javadoc
  

... schema - 数据库架构。 请注意,架构名称是大小写   敏感。这是必要的,因为模式具有相同的名称但是   不同的案例可以在一个数据库中共存。 ......

我想DBUnit开发人员更正了架构名称案例,以避免此行为可能导致的问题。

DatabaseConnection是指定的所有其他数据库DatabaseConnectionH2DatabaseConnection的通用超类。

当创建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”