J'utilise dBunit pour créer des sauvegardes de base de données, qui peuvent être importées et exportées. Ma candidature peut utiliser plusieurs moteurs de base de données: MySQL, PostgreSQL, SQLSERVER, H2 et Oracle.
Toutes les éléments suivants fonctionnent avec le code suivant: p>
!ENTRY es.giro.girlabel.backup 1 0 2012-04-11 11:51:40.542 !MESSAGE Start import backup org.dbunit.database.AmbiguousTableNameException: AQ$_SCHEDULES at org.dbunit.dataset.OrderedTableNameMap.add(OrderedTableNameMap.java:198) at org.dbunit.database.DatabaseDataSet.initialize(DatabaseDataSet.java:231) at org.dbunit.database.DatabaseDataSet.getTableMetaData(DatabaseDataSet.java:281) at org.dbunit.operation.DeleteAllOperation.execute(DeleteAllOperation.java:109) at org.dbunit.operation.CompositeOperation.execute(CompositeOperation.java:79) at es.giro.girlabel.backup.ImportBackup.createData(ImportBackup.java:39) at es.giro.girlabel.backup.handlers.Import.execute(Import.java:45)
5 Réponses :
du Docs : P>
Classe publique AmbiguyTaBlaMameException extends DataSetException code> P>
Cette exception est lancée par
iDataset code> lorsque plusieurs tables ayant le Le même nom est accessible. Cela se produit généralement lorsque la base de données La connexion a accès à plusieurs schémas contenant une table identique noms. p>
Solutions possibles: P>
1) Utilisez un identifiant de connexion de base de données qui a Accès à un seul schéma de base de données. P>
2) Spécifiez un nom de schéma à la
DatabasEconnection Code> ou
DatabasedAtaSourCeconnection Code> Constructeur. P>
3) Activez le support de nom de la table qualifié (voir Documentation sur la procédure). P> blockQuote>
Merci, j'ai déjà résolu ce problème, mais c'était par la solution 1 que vous avez mentionnée.
Je vous utilisez Spring-dbunit , solution 1) peut être obtenu en définissant la propriété système < un href = "https://github.com/excilys/spring-dbunit/issues/18" rel = "nOfollow noreferrer"> printemps.dbunit.schema .
Je l'ai rééquilibré en réglant DatabasEconfigbean # SetQualifetablernes code> vers
true code>.
Les solutions sont plus clairement expliquées dans ce post: Stackoverflow.com/a/14932264/3396045 . Pour printemps JDBC, je devais faire ceci: Stackoverflow.com/a/64576554/3396045
Pour qui utilise Springdbunit. J'avais eu du mal à ce problème très gênant. J'avais fini par résoudre le problème en ajoutant la configuration pour Ceci est mon contexte de printemps complet pour Springdbunit p> com.github.springtestestdbunit.bean.databaseconfigbean code> et
com.github.springtestdbunit.bean.databasedataSourCeconnectionFactorybean code>.
J'ai eu la même exception ambiguërenameException tout en exécutant DBunits Aginst Oracle DB. Cela fonctionnait bien et commençait à jeter une erreur un jour. P>
Colorale: En appelant une procédure stockée, elle a été modifiée par erreur en minuscule. Lorsqu'il est changé en majuscule, il a regardé de fonctionner. P>
Je pourrais également résoudre ce problème en définissant le nom de l'œillet à Idatabasester comme Idatabasester.SetSchema ("SchemanameCaps") P>
Veuillez également vous assurer que votre connexion n'accédait qu'à de nombreux schémas ayant le même nom de table. P>
Réglage du schéma de base de données résolu pour moi:
@Bean public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection(final DataSource dataSource){ final DatabaseDataSourceConnectionFactoryBean connectionFactory = new DatabaseDataSourceConnectionFactoryBean(); connectionFactory.setDataSource(dataSource); connectionFactory.setSchema(DB_SCHEMA); return connectionFactory; }
Vous pouvez rencontrer des problèmes lors de l'importation de données d'hibernate avant que DBUnit fonctionne. Selon la base de données que vous utilisez, le boîtier des noms de table et de colonne pourrait être important. P>
Par exemple, dans HSQL, les noms de base de données doivent être déclarés en majuscules. Si vous importeriez des données via Import.SQL d'Hibernate, assurez-vous que les noms de table sont également en majuscule, sinon vous vous retrouverez avec le problème suivant: P>
N'oubliez pas de vérifier également si plusieurs tables ont été créées lors d'une exécution précédente (majuscules et minuscules), auquel cas vous devez le nettoyer aussi. P>