Как мне заставить dbunit хорошо работать с типами данных MySQL?

StackOverflow https://stackoverflow.com/questions/706371

  •  22-08-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать дбунит чтобы протестировать наш код доступа к базе данных, и я столкнулся с проблемой.Мы используем MySQL 5 то или иное, как сама база данных.Я экспортировал небольшой набор данных в Флэтксмлдатасет и когда я настраиваю тестовый пример, он выдает исключение, которое говорит: «Данные усечены для столбца «FHEIGHT_FLAG» в строке 1».Столбец FHEIGHT_FLAG определяется как

enum('t','f') default NULL

То, как перечисление данные вставляются в базу данных, если реальное значение источника данных не соответствует действительности, то столбец фактически содержит "" (пустую строку).Код, использующий базу данных, просто предполагает, что если значение, полученное из базы данных, не равно «t», то оно должно быть ложным.Как я могу это сделать?Я не могу исправить исходные данные, поэтому мне нужно попытаться что-то сделать с тестовым примером.

Это было полезно?

Решение

Экспортируйте новый набор данных, используя "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename";

(Но, конечно, расположите столбцы так, как они есть в реальной таблице.)

final String select = "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename";
// database connection
Class driverClass = Class.forName("package.of.jdbcDriver");
Connection jdbcConnection = DriverManager.getConnection(
        "jdbc:url:of:db", "user", "pass");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);

// partial database export
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("Tablename", select);

FlatXmlDataSet.write(partialDataSet, new FileOutputStream("mydataset.xml"));

Другие советы

В итоге я изменил столбец FHEIGHT_FLAG тестовой базы данных, чтобы он был

enum('','t','f') default NULL

таким образом все пустые строковые значения можно было вставить обратно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top