2011-03-24 22 views
8

Tengo una serie de pruebas de unidad, que utilizan Apache Derby en la memoria. Mi URL de conexión es: jdbc:derby:memory:srf.derby;create=trueAdvertencia cuando se utiliza Apache Derby en la memoria

descubrí que cada vez, cuando un método marcado como @Transactional está terminando, recibo una advertencia 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. 

¿Por qué es? ¿Qué estoy haciendo mal?

Gracias

+0

¿Es Spring's @Transactional? – TheConstructor

Respuesta

8

Usted no está haciendo nada malo. Está pasando '; create = true' cada vez, pero la base de datos solo se crea la primera vez que su programa accede a ella. Dado que está en la memoria, la base de datos se cuelga hasta que el programa finalice, momento en el que desaparece.

Puede evitar la advertencia pasando '; create = true' solo en la primera prueba en su conjunto de pruebas, y las pruebas subsiguientes no necesitan pasar ese valor.

O simplemente, no podría preocuparse por la advertencia.

+0

Veo que el problema no es la creación de la base de datos. Durante la misma prueba, cada vez que ejecuto un método transaccional, esta advertencia se imprime. Cambié a un archivo basado en DB incrustado, pero todavía tengo la misma advertencia –

+3

Para ser precisos, cada vez que se conecta a una base de datos Derby que ya existe, utilizando una conexión URL que contiene "; create = true", obtendrá la advertencia. No es porque esté en la memoria, es porque ya existe y le está diciendo a Derby que lo cree. –

Cuestiones relacionadas