java - 在 infinispan 中使用 (mysql) jdbc 存储时,__defaultcache' 不存在错误

标签 java mysql jdbc infinispan

我正在尝试使用 mysql 作为 infinispan 的 JDBC 存储和加载程序。我想将mysql表中的现有数据预加载到缓存中。下面是我使用的配置和代码。

EmbededCache embededCache = new EmbededCache();
            ConfigurationBuilder b = new ConfigurationBuilder();
            b.eviction().maxEntries(100l);
            b.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
                .preload(true)
               .fetchPersistentState(false)
               .ignoreModifications(false)
               .purgeOnStartup(false)
               .table()
               .dropOnExit(false)
               .createOnStart(false)
               .tableNamePrefix("SIMULATOR.SCRIPS")
               .idColumnName("SCRP_ID").idColumnType("int(11)")
               .dataColumnName("SCRP_NAME").dataColumnType("varchar(20)")
               .timestampColumnName("SCRP_LAST_UPDATED").timestampColumnType("decimal(10,0)")
               .connectionPool()
               .connectionUrl("jdbc:mysql://ip:port")
               .username("username")
               .password("password")
               .driverClass("com.mysql.jdbc.Driver");

            final Configuration config = b.build();

            EmbeddedCacheManager cacheManager = new DefaultCacheManager(config);
            Cache<Object, Object> cache = cacheManager.getCache();
             ArrayList<Entry<Object, Object>> entries = new ArrayList<>(cache.entrySet());
             for (Map.Entry<Object, Object> e : entries) {
                 System.out.println(e.getKey());
                 System.out.println(e.getValue());   
              }

数据库的数据和结构是手动创建的。意思是不使用 infinispan 缓存。下面是我的表结构

Table Structure

但是当我尝试预加载时,出现以下错误。

ERROR: ISPN008007: SQL error while fetching all StoredEntries
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'SIMULATOR.SCRIPS____defaultcache' doesn't exist
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2643)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2228)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$2.call(JdbcStringBasedStore.java:332)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$2.call(JdbcStringBasedStore.java:317)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.infinispan.util.concurrent.WithinThreadExecutor.execute(WithinThreadExecutor.java:22)
    at java.util.concurrent.ExecutorCompletionService.submit(Unknown Source)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore.process(JdbcStringBasedStore.java:317)
    at org.infinispan.persistence.manager.PersistenceManagerImpl.preload(PersistenceManagerImpl.java:226)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:168)
    at org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:869)
    at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:638)
    at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:627)
    at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:530)
    at org.infinispan.factories.ComponentRegistry.start(ComponentRegistry.java:218)
    at org.infinispan.cache.impl.CacheImpl.start(CacheImpl.java:850)
    at org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:599)
    at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:554)
    at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:424)
    at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:397)
    at com.tlab.EmbededCache.main(EmbededCache.java:43)

May 05, 2015 9:55:04 AM org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore process
ERROR: ISPN000252: Error executing parallel store task
java.util.concurrent.ExecutionException: org.infinispan.persistence.spi.PersistenceException: SQL error while fetching all StoredEntries
    at java.util.concurrent.FutureTask.report(Unknown Source)
    at java.util.concurrent.FutureTask.get(Unknown Source)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore.process(JdbcStringBasedStore.java:364)
    at org.infinispan.persistence.manager.PersistenceManagerImpl.preload(PersistenceManagerImpl.java:226)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:168)
    at org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:869)
    at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:638)
    at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:627)
    at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:530)
    at org.infinispan.factories.ComponentRegistry.start(ComponentRegistry.java:218)
    at org.infinispan.cache.impl.CacheImpl.start(CacheImpl.java:850)
    at org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:599)
    at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:554)
    at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:424)
    at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:397)
    at com.tlab.EmbededCache.main(EmbededCache.java:43)
Caused by: org.infinispan.persistence.spi.PersistenceException: SQL error while fetching all StoredEntries
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$2.call(JdbcStringBasedStore.java:355)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$2.call(JdbcStringBasedStore.java:317)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.infinispan.util.concurrent.WithinThreadExecutor.execute(WithinThreadExecutor.java:22)
    at java.util.concurrent.ExecutorCompletionService.submit(Unknown Source)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore.process(JdbcStringBasedStore.java:317)
    ... 17 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'SIMULATOR.SCRIPS____defaultcache' doesn't exist
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2643)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2228)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$2.call(JdbcStringBasedStore.java:332)
    ... 24 more

Exception in thread "main" org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.persistence.manager.PersistenceManagerImpl.preload() on object of type PersistenceManagerImpl
    at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:171)
    at org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:869)
    at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:638)
    at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:627)
    at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:530)
    at org.infinispan.factories.ComponentRegistry.start(ComponentRegistry.java:218)
    at org.infinispan.cache.impl.CacheImpl.start(CacheImpl.java:850)
    at org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:599)
    at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:554)
    at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:424)
    at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:397)
    at com.tlab.EmbededCache.main(EmbededCache.java:43)
Caused by: org.infinispan.persistence.spi.PersistenceException: java.util.concurrent.ExecutionException: org.infinispan.persistence.spi.PersistenceException: SQL error while fetching all StoredEntries
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore.process(JdbcStringBasedStore.java:369)
    at org.infinispan.persistence.manager.PersistenceManagerImpl.preload(PersistenceManagerImpl.java:226)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:168)
    ... 11 more
Caused by: java.util.concurrent.ExecutionException: org.infinispan.persistence.spi.PersistenceException: SQL error while fetching all StoredEntries
    at java.util.concurrent.FutureTask.report(Unknown Source)
    at java.util.concurrent.FutureTask.get(Unknown Source)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore.process(JdbcStringBasedStore.java:364)
    ... 17 more
Caused by: org.infinispan.persistence.spi.PersistenceException: SQL error while fetching all StoredEntries
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$2.call(JdbcStringBasedStore.java:355)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$2.call(JdbcStringBasedStore.java:317)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.infinispan.util.concurrent.WithinThreadExecutor.execute(WithinThreadExecutor.java:22)
    at java.util.concurrent.ExecutorCompletionService.submit(Unknown Source)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore.process(JdbcStringBasedStore.java:317)
    ... 17 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'SIMULATOR.SCRIPS____defaultcache' doesn't exist
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2643)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2228)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
    at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$2.call(JdbcStringBasedStore.java:332)
    ... 24 more

最佳答案

表名是使用表名前缀、“_”和缓存名称的串联创建的。默认缓存的名称为“__defaultCache”,这就是您收到上述异常的原因。因此,您无法将现有表(其名称不遵循此表示法)映射到缓存存储 - 您需要重命名它。然后希望其他列匹配。

关于java - 在 infinispan 中使用 (mysql) jdbc 存储时,__defaultcache' 不存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30056773/

相关文章:

java - 抽象类作为接口(interface)中的属性,将被子类覆盖

java - 用十六进制字符串加密和解密

PHP mysql infile 不工作

php - 如何回显数据库中查询的结果?

Java 异常没有从 db2 控制台返回相同的异常消息?

java 如何使用 JDBC 执行 SQL Dump 数据

mysql - jdbc: 无法创建与数据库服务器的连接

java - 检查一个节点中每个子节点是否存在的最佳方法是什么?

Java从链表递归中删除一个元素

mysql - 通过数据库保存流媒体文件(视频或音频或两者)的方式及其效果