【发布时间】:2014-09-18 12:22:26
【问题描述】:
我正在使用 DBUnit 进行一些单元测试。我可以从 xml 文件中正确插入数据集,但在每件事完成后我无法清除数据集。
下面是我的 ID 列的表架构(我在这里省略了其他列):
FIELD TYPE COLLATION NULL KEY DEFAULT Extra PRIVILEGES
----------- ---------------- ----------------- ------ ------ ------------ -------------- -------------------------------
ID INT(11) UNSIGNED (NULL) NO PRI (NULL) AUTO_INCREMENT SELECT,INSERT,UPDATE,REFERENCES
以下是 XML 数据集:
<dataset>
<MY_TABLE NAME="NISAY" />
</dataset>
我正在使用FlatXmlDataSetBuilder 来构建数据集。创建时,我使用InsertIdentityOperation.INSERT.execute(iConnection, dataSet);,删除时我使用InsertIdentityOperation.DELETE.execute(iConnection, dataSet);
数据集已正确插入数据库,但在删除时抛出以下异常:
org.dbunit.dataset.NoSuchColumnException: MY_TABLE.ID - (Non-uppercase input column: ID) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
at org.dbunit.dataset.AbstractTableMetaData.getColumnIndex(AbstractTableMetaData.java:117)
at org.dbunit.dataset.AbstractTable.getColumnIndex(AbstractTable.java:78)
at org.dbunit.dataset.DefaultTable.getValue(DefaultTable.java:197)
at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:189)
为了测试一切是否正确,我从 ID 列中删除了 unsigned 约束并使用以下数据集:
<dataset>
<MY_TABLE ID="-99" NAME="NISAY" />
</dataset>
使用上述方法,一切正常。但是,ID 必须是unsigned。如何告诉 DBUnit 在删除时忽略主键?我尝试使用过滤器,但不确定它们是否配置正确。
【问题讨论】: