Java DBunit;表/列名区分大小写的混淆

Java DBunit;表/列名区分大小写的混淆,java,case-sensitive,dbunit,mysql5,Java,Case Sensitive,Dbunit,Mysql5,我在启动应用程序时遇到此错误 Caused by: org.dbunit.dataset.NoSuchColumnException: CLIENT.ID - (Non-uppercase input column: ID) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive 我不太清楚为什么会这样,因为我的表/列名都是大写的(尽管消息坚持这不应该是个问题) 我的桌

我在启动应用程序时遇到此错误

Caused by: org.dbunit.dataset.NoSuchColumnException: CLIENT.ID -  (Non-uppercase input column: ID) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive
我不太清楚为什么会这样,因为我的表/列名都是大写的(尽管消息坚持这不应该是个问题)

我的桌子:

mysql> describe CLIENT;
+------------------+--------------+------+-----+---------+----------------+
| Field            | Type         | Null | Key | Default | Extra          |
+------------------+--------------+------+-----+---------+----------------+
| ID               | int(11)      | NO   | PRI | NULL    | auto_increment |
| jdoDetachedState | tinyblob     | YES  |     | NULL    |                |
| NAME             | varchar(255) | NO   |     | NULL    |                |
| ADDRESS1         | varchar(255) | YES  |     | NULL    |                |
| ADDRESS2         | varchar(255) | YES  |     | NULL    |                |
| COUNTRY          | varchar(255) | YES  |     | NULL    |                |
| COUNTY           | varchar(255) | YES  |     | NULL    |                |
| MAINPHONENUMBER  | varchar(255) | YES  |     | NULL    |                |
| POSTCODE         | varchar(255) | YES  |     | NULL    |                |
| SECTOR           | varchar(255) | YES  |     | NULL    |                |
| TOWN             | varchar(255) | YES  |     | NULL    |                |
| WEBSITEURL       | varchar(255) | YES  |     | NULL    |                |
+------------------+--------------+------+-----+---------+----------------+
12 rows in set (0.00 sec)

mysql> 
我的域实体的代码段:

@Id
@GeneratedValue
@Column(name="ID")
private Integer id;
我试图强制DBUnit使用的测试日期片段:

<dataset>
  <CLIENT ID="-1"
    ADDRESS1="Endeavour House"
    ADDRESS2="Russell Rd"
    COUNTRY="England"
    COUNTY="Suffolk"
    MAINPHONENUMBER="0845 606 6067"
    NAME="Suffolk County Council"
    POSTCODE="IP1 2BX"
    SECTOR="Local Government"
    TOWN="Ipswich"
    WEBSITEURL="www.suffolk.gov.uk"/>
</dataset>


我想不出还有什么可以尝试的了,已经删除了表并重新编译了java代码,有什么想法吗?

您不是想把ID已经设置好的数据库客户端放进去吗?ID列是只读的,只有数据库可以“写入”它。

如果您使format=flat,mysql和hsql会消除此错误。

在将列添加到我的一个实体(使用内存中的hsql数据库)后,我也遇到了此问题

我通过简单地删除以前生成的临时文件来解决这个问题:mem:testdb.log、mem:testdb.properties和mem:testdb.script


为什么会发生此错误?=>数据库架构存储在mem:testdb.script文件中,在修改实体时不会重新生成。

我遇到了相同的错误,幸运的是,我们之前编写了一些其他测试,发现在大多数教程中,xml的编写方式是针对FlatXMLDataSet的。如果您使用的是xml数据集,那么正确的版本如下所示。有关更多信息,请查看底部的链接

它应该是以下格式

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <table>
        <column>id</column>
        <column>name</column>
        <column>department</column>
        <column>startDate</column>
        <column>endDate</column>
        <row>
            <value>999</value>
            <value>TEMP</value>
            <value>TEMP DEPT</value>
            <value>2113-10-13</value>
            <value>2123-10-13</value>
        </row>
    </table>
</dataset>

身份证件
名称
部门
起始日期
实际结束
999
临时雇员
临时部门
2113-10-13
2123-10-13
有关更多信息,请访问此链接


再一次,我在另一个项目中遇到了这个错误,我们有一个模型类的层次结构,hibernate如何创建一个包含7列的表角色,但在使用DBUnit运行它时,它无法创建列(只创建了5列),因此它抛出了这个错误,解决方案:手动创建此表和另外3个不是由hibernate创建的关系表。

我已通过将所述列添加到实体中修复了此错误。

看起来可能有一个公开的错误。这看起来像是发生在你身上的事情吗?请展示你数据集的大部分。嗯,很奇怪。您可能应该添加您正在使用的dbunit版本,但这看起来像一个bug。我会将其发布到dbunit用户邮件列表,可能会打开一个问题(),我使用的是2.4.2,但是2.4.7可能会给出相同的结果,但是如果我从testData.xml中删除“ID”部分,我会在下一个字段中得到相同的错误,即“address1”。是否所有字段都是只读的?这也为我解决了这个问题。