org.dbunit.dataset.NoSuchTableException:在模式'null'中找不到表'xxx'

org.dbunit.dataset.NoSuchTableException:在模式'null'中找不到表'xxx',第1张

org.dbunit.dataset.NoSuchTableException:在模式'null'中找不到表'xxx'

我也遇到了同样的错误,上面接受的修复方法没有解决我的问题。但是我能够找到解决方案。

我的设置包括DBUnit(2.4),作为我的JPA提供者的Eclipselink(2.1)和作为我的后端数据库的Postgres。另外,在我的场景中,我没有为每次测试运行删除和重新创建表。我的测试数据已经存在。我知道这是错误的做法,但更多的是测试/原型制作场景。下面的代码说明了用于解决我的问题的DBUnit配置。

54    // ctx represents a spring context55    DataSource ds = (DataSource)ctx.getBean("myDatasourceBean");56    Connection conn = DataSourceUtils.getConnection(ds);57    IDatabaseConnection dbUnitConn = new DatabaseConnection(conn, "public");58    DatabaseConfig dbCfg = dbUnitConn.getConfig();59    dbCfg.setFeature(DatabaseConfig.FEATURE_CASE_SENSITIVE_TABLE_NAMES, Boolean.TRUE);60    IDataSet dataSet = new FlatXmlDataSet(ClassLoader.getSYstemResourceAsStream("mydbunitdata.xml"));61    DatabaseOperation.REFRESH.execute(dbUnitConn, dataSet);

上面的代码中的两件事解决了我的问题。首先,我需要定义DBUnit应该使用的架构。这是在上面的第57行上完成的。设置新的DatabaseConnection时,如果schema(“ public”)不为null,则应将其传递。

其次,我需要DBUnit对数据库表名称区分大小写。在我的DBUnit xml文件(“ mydbunitdata.xml”)中,表名都是小写的,就像它们在数据库中一样。但是,如果不告诉DBUnit使用区分大小写的表名,它将查找Postgres不喜欢的大写表名。因此,我需要在第59行完成的DBUnit中设置区分大小写的功能。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4911016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存