Для тестов JUnit в нашем приложении я пытаюсь инициализировать Datanucleus для использования базы данных SQLite.Тем не менее, когда я пытаюсь получить PersistenceManager
, происходит сбой при попытке создать таблицу DELETEME********
(я также не до конца понимаю, ПОЧЕМУ ей еще нужна эта таблица).
Похоже, что это не удаетсяво время truncate () из-за некоторой проблемы длины идентификатора.Я пытался настроить всевозможные свойства конфигурации datanucleus безрезультатно.
Может кто-нибудь объяснить мне, почему Datanucleus чувствует необходимость создания этих DELETEME****
таблиц, и что потенциально может вызвать эту ошибку усечения сБаза данных SQLite (org.sqlite.JDBC), а не с MySQL?
Журнал:
Apr 12, 2011 1:30:16 PM org.datanucleus.store.rdbms.table.AbstractTable create
INFO: Creating table DELETEME1302640216142
Apr 12, 2011 1:32:10 PM org.datanucleus.store.rdbms.RDBMSStoreManager <init>
SEVERE: Failed initialising database. Please check that your database JDBC driver is accessible, and the database URL and username/password are correct. Exception : The length argument (=-3) is less than HASH_LENGTH(=4)!
java.lang.IllegalArgumentException: The length argument (=-3) is less than HASH_LENGTH(=4)!
Полная трассировка стека:
java.lang.IllegalArgumentException: The length argument (=-3) is less than HASH_LENGTH(=4)!
at org.datanucleus.store.mapped.identifier.AbstractIdentifierFactory.truncate(AbstractIdentifierFactory.java:314)
at org.datanucleus.store.mapped.identifier.AbstractIdentifierFactory.newPrimaryKeyIdentifier(AbstractIdentifierFactory.java:661)
at org.datanucleus.store.rdbms.key.PrimaryKey.<init>(PrimaryKey.java:37)
at org.datanucleus.store.rdbms.table.TableImpl.getPrimaryKey(TableImpl.java:128)
at org.datanucleus.store.rdbms.table.TableImpl.getSQLCreateStatements(TableImpl.java:1264)
at org.datanucleus.store.rdbms.table.AbstractTable.create(AbstractTable.java:419)
at org.datanucleus.store.rdbms.RDBMSStoreManager.initialiseSchema(RDBMSStoreManager.java:676)
at org.datanucleus.store.rdbms.RDBMSStoreManager.<init>(RDBMSStoreManager.java:350)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:597)
at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:300)
at org.datanucleus.ObjectManagerFactoryImpl.initialiseStoreManager(ObjectManagerFactoryImpl.java:227)
at org.datanucleus.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:591)
at org.datanucleus.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.java:293)
at org.datanucleus.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.java:189)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.jdo.JDOHelper$16.run(JDOHelper.java:1965)
at java.security.AccessController.doPrivileged(Native Method)
at javax.jdo.JDOHelper.invoke(JDOHelper.java:1960)
at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1166)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)