Question

Je suis en train d'utiliser pour tester un code d'accès à notre base de données DBUnit et je suis en cours d'exécution en un problème. Nous utilisons MySQL 5 quelque chose ou autre que la base de données elle-même. J'ai exporté un petit ensemble de données à un FlatXmlDataSet et quand je configurer le cas de test, il lance une exception qui dit « les données tronquées dans la colonne « FHEIGHT_FLAG » à la ligne 1 ». Le FHEIGHT_FLAG de colonne est définie comme

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

La façon dont les données enum est inséré à la base de données, si la valeur réelle de la source des données est pas vrai, la colonne contient en fait « » (chaîne vide). Le code en utilisant la base de données est juste faire l'hypothèse que si la valeur fournie par la base de données ne sont pas « t », alors il doit être faux. Comment puis-je faire passer ça? Je ne peux pas fixer les données sources, donc je dois essayer de faire quelque chose avec le cas de test.

Était-ce utile?

La solution

Exporter un nouvel ensemble de données, en utilisant "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename";

(Mais l'ordre des colonnes comme dans la table réelle, bien sûr.)

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"));

Autres conseils

I fini par la modification de la base de données test de colonne FHEIGHT_FLAG être

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

de cette façon toutes les valeurs de chaîne vides ont été autorisés à être réinséré.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top