【问题标题】:Java DbUnit information schema MySQLJava DbUnit 信息架构 MySQL
【发布时间】:2018-05-14 13:45:53
【问题描述】:

我使用 Java 和 MySQL 数据库,当我尝试运行测试时收到消息:

org.dbunit.dataset.DataSetException: java.sql.SQLSyntaxErrorException: information_schema 中的未知表“my_table”

看起来 DbUnit 无法访问表的元数据。 你有什么想法吗?

谢谢

【问题讨论】:

  • 请向我们展示导致此错误的 Java/SQL 代码。看起来您可能没有连接到正确的数据库。
  • 我使用文件 load.xml 将其加载到数据集中。 <?xml version="1.0" encoding="UTF-8"?> <dataset> <MY_TABLE Col1= "1" Col2="11000" Col3="ABC" /> </dataset> 我将内容加载到 InputStream 并获得如下所示的数据集(xmlDsBuilder 是 Fl​​atXmlDataSetBuilder):IDataSet dataSet = xmlDsBuilder.build(inputStreamXml); 如果我写了一个错误的表名,我得到了:org.dbunit.dataset.NoSuchTableException: MY_TABLE_NAME

标签: java mysql dbunit


【解决方案1】:

我也遇到过同样的问题。当前版本的DBUnit (2.6.0) 似乎与最新版本的mysql-connector-java 不兼容。我通过将mysql-connector-java 的版本更改为5.*.* 来修复它。

如果它不起作用。您可以尝试自己指定架构。为此,您需要创建一个IDataBaseConnection bean

@Bean("mysqlTestSource")
public IDatabaseConnection databaseConnection(DataSource dataSource) throws SQLException, DatabaseUnitException {
    return new MySqlConnection(dataSource.getConnection(), YOUR_SCHEMA_NAME);
}

然后通过将此注释添加到您的测试类来要求 DBUnit 使用此连接

@DbUnitConfiguration(databaseConnection = "mysqlTestSource")

希望对你有帮助。

【讨论】:

    【解决方案2】:

    可能是架构混淆问题 - AmbiguousTableNameException FAQ 条目应该可以解决它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 2010-09-15
      • 2012-03-24
      • 2021-12-12
      相关资源
      最近更新 更多