DBUnit; путаница в чувствительности к регистру имен таблиц / столбцов - PullRequest
4 голосов
/ 06 февраля 2010

Я получаю эту ошибку при запуске приложения

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-код, есть идеи?

Ответы [ 5 ]

2 голосов
/ 02 декабря 2015

Я исправил ошибку, добавив упомянутый столбец к моей сущности.

2 голосов
/ 06 января 2012

У меня также была эта проблема после добавления столбца в одну из моих сущностей (с использованием базы данных HSQL в памяти).

Мне удалось решить эту проблему, просто удалив предварительно созданные временные файлы: mem: testdb.log, mem: testdb.properties и mem: testdb.script

Почему произошла эта ошибка? => Схема базы данных хранится в файле mem: testdb.script и не генерируется повторно при изменении объекта.

2 голосов
/ 06 февраля 2010

Не пытаетесь ли вы положить в базу данных клиента с уже установленным идентификатором? Столбец ID доступен только для чтения, запись в него может выполнять только база данных.

1 голос
/ 21 ноября 2013

Я столкнулся с той же ошибкой, к счастью, у нас был какой-то другой тест, написанный ранее, и обнаружил, что в большинстве руководств формат написан в формате 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>

Для получения дополнительной информации перейдите по этой ссылке.

http://dbunit.sourceforge.net/components.html#FlatXmlDataSet

Еще раз, когда я столкнулся с этой ошибкой в ​​другом проекте, у нас есть иерархия класса модели, некоторые из которых hibernate использовал для создания роли таблицы с 7 столбцами, но во время работы с DBUnit он не смог создать столбцы (только 5 было создано), следовательно, он выдавал эту ошибку. Решение: вручную создал эту таблицу и еще 3 таблицы взаимосвязей, которые не были созданы hibernate.

0 голосов
/ 09 сентября 2010

эта ошибка исчезнет с mysql и hsql, если вы сделаете format = flat

...