我的grails应用程序在生产中使用h2嵌入式数据库,最近我决定将它从grails 2.3升级到2.4。它在开发模式下运行良好,但在部署到tomcat后我提到有些东西坏了,例如计算用户有问题,ApplicationContext无法用getBean等加载我的服务。我检查了日志并发现了以下错误:< / p>
org.springframework.beans.factory.BeanCreationException:使用name创建bean时出错 &#39; dialectDetector&#39;:init方法的调用失败;嵌套异常是 org.springframework.jdbc.support.MetaDataAccessException:提取时出错 DatabaseMetaData的;嵌套异常是org.h2.jdbc.JdbcSQLException:唯一索引或主要索引 密钥违规:&#34; PRIMARY KEY ON&#34;&#34;&#34;&#34; .PAGE_INDEX&#34 ;; SQL语句: ALTER TABLE PUBLIC.SHIRO_USER_ROLES添加约束PUBLIC.FKBA2210573552FAD9 FOREIGN KEY(SHIRO_USER_ID)参考PUBLIC.SHIRO_USER(ID)NOCHECK [23505-176] at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:701) 引起:org.springframework.jdbc.support.MetaDataAccessException:提取时出错 DatabaseMetaData的;嵌套异常是org.h2.jdbc.JdbcSQLException:唯一索引或主要索引 密钥违规:&#34; PRIMARY KEY ON&#34;&#34;&#34;&#34; .PAGE_INDEX&#34 ;; SQL语句: ALTER TABLE PUBLIC.SHIRO_USER_ROLES添加约束PUBLIC.FKBA2210573552FAD9 FOREIGN
KEY(SHIRO_USER_ID)参考PUBLIC.SHIRO_USER(ID)NOCHECK [23505-176] ......还有6个 引起:org.h2.jdbc.JdbcSQLException:唯一索引或主键违规:&#34; PRIMARY&gt; KEY ON&#34;&#34;&#34;&#34; .PAGE_INDEX&#34 ;; SQL语句: ALTER TABLE PUBLIC.SHIRO_USER_ROLES添加约束PUBLIC.FKBA2210573552FAD9 FOREIGN KEY(SHIRO_USER_ID)参考PUBLIC.SHIRO_USER(ID)NOCHECK [23505-176]
看起来H2驱动程序版本已在grails 2.4中更新,并且与先前版本的数据库方案不兼容。那么我能做些什么呢?如何将我的数据库迁移到新H2,以便正常工作?