【发布时间】:2013-02-13 11:38:26
【问题描述】:
我正在使用 DBUnit 填充数据库,以便其内容在测试期间是已知内容。
我正在处理的数据库架构位于一个 Oracle 11g 实例中,它们驻留在其他数据库架构中。在其中一些模式中定义了一个表,该表已与公共同义词相关联,并且已被授予选择权限。
当我运行定义必须如何填充数据库的 xml 时,如果 xml 文件不包含在多个模式中定义的表,DBUnit 会在该表上引发 AmbiguousTableNameException 异常。
我发现有 3 种解决方案可以解决此问题:
- 使用只能访问一个数据库连接凭据 数据库架构。
- 为 DatabaseConnection 或 DatabaseDataSourceConnection 构造函数。
- 启用限定表名支持(请参阅操作说明文档)。
在我的情况下,我只能应用解决方案 1,但即使我采用它,我也会遇到同样的异常。
给我带来问题的表在 3 个模式中定义,我没有机会以任何方式对其采取行动。
拜托,有人可以帮助我吗?
【问题讨论】:
-
AmbiguousTableNameException 如果在 DataSet 中多次指定同一个表,例如
new DefaultDataSet(new ITable[] { new DefaultTable("myschema.mytable"), new DefaultTable("myschema.mytable") });