2011-03-24 2 views
8

J'ai un certain nombre de tests unitaires, qui utilisent Apache Derby en mémoire. Mon URL de connexion est: jdbc:derby:memory:srf.derby;create=trueAvertissement lors de l'utilisation d'Apache Derby en mémoire

J'ai découvert que chaque fois, lorsqu'une méthode marquée comme @Transactional termine, je reçois un avertissement Derby

12:53:28:5328 [org.hibernate.util.JDBCExceptionReporter] [main] WARN - SQL Warning: 10000, SQLState: 01J01 
12:53:28:5328 [org.hibernate.util.JDBCExceptionReporter] [main] WARN - Database 'memory:srf.derby' not created, connection made to existing database instead. 

Pourquoi est-il? Qu'est-ce que je fais mal?

Merci

+0

Est-ce @Transactional de Spring? – TheConstructor

Répondre

8

Vous ne faites rien de mal. Vous passez '; create = true' à chaque fois, mais la base de données n'est créée que la première fois que votre programme y accède. Comme il est en mémoire, la base de données reste ensuite jusqu'à ce que votre programme se termine, à quel point il disparaît.

Vous pouvez éviter l'avertissement en transmettant '; create = true' uniquement lors du premier test de votre suite de tests, puis les tests suivants n'ont pas besoin de transmettre cette valeur.

Ou, vous ne pourriez pas vous inquiéter de l'avertissement.

+0

Je vois que le problème n'est pas la création de la base de données. Au cours du même test, chaque fois que j'exécute une méthode transactionnelle, cet avertissement est imprimé. Je suis passé à un DB incorporé basé sur des fichiers, mais j'ai toujours le même avertissement –

+3

Pour être précis, chaque fois que vous vous connectez à une base de données Derby existante, en utilisant une URL de connexion contenant "; create = true", vous obtiendrez l'avertissement. Ce n'est pas parce que c'est en mémoire, c'est parce que ça existe déjà et que vous dites à Derby de le créer. –

Questions connexes