Java 已更正dbunit中的表名消息
dbunit数据已按照模式定义使用小写表名填充。为什么每次我为所有数据库(h2、mysql..)运行脚本时都会得到一个更正的表警告Java 已更正dbunit中的表名消息,java,jdbc,dbunit,Java,Jdbc,Dbunit,dbunit数据已按照模式定义使用小写表名填充。为什么每次我为所有数据库(h2、mysql..)运行脚本时都会得到一个更正的表警告 实际上DBUnit确实提到了这一点 下面是DatabaseConnection构造函数的javadoc 。。。模式-数据库模式请注意,架构名称是大小写 敏感的这是必要的,因为具有相同名称但 不同的案例可以共存于一个数据库。 我猜DBUnit开发人员更正模式名称大小写是为了避免这种行为可能导致的问题 DatabaseConnection是指定的所有其他数据库的通用超类
实际上DBUnit确实提到了这一点 下面是
DatabaseConnection
构造函数的javadoc
。。。模式-数据库模式请注意,架构名称是大小写
敏感的这是必要的,因为具有相同名称但
不同的案例可以共存于一个数据库。
我猜DBUnit开发人员更正模式名称大小写是为了避免这种行为可能导致的问题
DatabaseConnection
是指定的所有其他数据库的通用超类,例如DatabaseConnection
,H2DatabaseConnection
创建DatabaseConnection
时,DBUnit将从jdbc连接检索有关数据库的元数据,顺便说一下,这是java.sql.DatabaseMetaData
的实现
在此之后,DBUnit将通过检查元数据来更正模式名称,这就是您总是获得日志消息的原因
DBUnit使用以下数据库元数据的方法来检查
boolean storesUpperCaseIdentifiers() throws SQLException;
boolean storesLowerCaseIdentifiers() throws SQLException;
下面是H2 jdbc驱动程序的实现
public boolean storesUpperCaseIdentifiers() {
debugCodeCall("storesUpperCaseIdentifiers");
return true;
}
所以表“user”变成了“user”Awesome,除了更改jdbc实现之外,还有什么方法可以更改它吗?我从来不需要更改它,所以我不知道。您最好的机会可能是阅读DBUnit源代码。
public boolean storesUpperCaseIdentifiers() {
debugCodeCall("storesUpperCaseIdentifiers");
return true;
}