微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 更正了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

解决方法:

实际上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”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐