Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 已更正dbunit中的表名消息_Java_Jdbc_Dbunit - Fatal编程技术网

Java 已更正dbunit中的表名消息

Java 已更正dbunit中的表名消息,java,jdbc,dbunit,Java,Jdbc,Dbunit,dbunit数据已按照模式定义使用小写表名填充。为什么每次我为所有数据库(h2、mysql..)运行脚本时都会得到一个更正的表警告 实际上DBUnit确实提到了这一点 下面是DatabaseConnection构造函数的javadoc 。。。模式-数据库模式请注意,架构名称是大小写 敏感的这是必要的,因为具有相同名称但 不同的案例可以共存于一个数据库。 我猜DBUnit开发人员更正模式名称大小写是为了避免这种行为可能导致的问题 DatabaseConnection是指定的所有其他数据库的通用超类

dbunit数据已按照模式定义使用小写表名填充。为什么每次我为所有数据库(h2、mysql..)运行脚本时都会得到一个更正的表警告


实际上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;
}