Мое приложение grails использует в производстве встроенную базу данных h2, и недавно я решил обновить его с grails 2.3 до 2.4. В режиме разработки все прошло нормально, но после развертывания на Tomcat я упомянул, что некоторые вещи сломаны, например, есть проблемы с подсчетом пользователей, ApplicationContext не может загрузить мои службы с помощью getBean и т. Д. Я проверил журналы и обнаружил следующие ошибки:
org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean-компонента с именем 'dialectDetector': не удалось вызвать метод инициализации; вложенное исключение - org.springframework.jdbc.support.MetaDataAccessException: Ошибка при извлечении DatabaseMetaData; вложенное исключение - org.h2.jdbc.JdbcSQLException: нарушение уникального индекса или первичного ключа: «PRIMARY KEY ON» «» «.PAGE_INDEX»; Оператор SQL: ALTER TABLE PUBLIC.SHIRO_USER_ROLES ADD CONSTRAINT PUBLIC.FKBA2210573552FAD9 ИНОСТРАННЫЙ КЛЮЧ (SHIRO_USER_ID) ССЫЛКИ PUBLIC.SHIRO_USER (ID) NOCHECK [23505-176] Execapter.nav.current.userconsurrent.installer. в java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:334) в java.util.concurrent.FutureTask.run (FutureTask.java:166) в java.util.concurrent.ThreadPoolExecutor.runorjavae (ThreadPoolExecutor.runorWorke : 1146) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) в java.lang.Thread.run (Thread.java:701) Вызвано: org.springframework.jdbc.support.Metaception :DataAccess Ошибка при извлечении DatabaseMetaData; вложенное исключение - org.h2.jdbc.JdbcSQLException: нарушение уникального индекса или первичного ключа: «PRIMARY KEY ON» «» «.PAGE_INDEX»; Оператор SQL: ALTER TABLE PUBLIC.SHIRO_USER_ROLES ADD CONSTRAINT PUBLIC.FKBA2210573552FAD9 FOREIGN
KEY (SHIRO_USER_ID) REFERENCES PUBLIC.SHIRO_USER (ID) NOCHECK [2350c.5-176] ... 6g. Нарушение уникального индекса или первичного ключа: "PRIMARY> KEY ON" "" ".PAGE_INDEX"; Оператор SQL: ALTER TABLE PUBLIC.SHIRO_USER_ROLES ADD CONSTRAINT PUBLIC.FKBA2210573552FAD9 FOREIGN KEY (SHIRO_USER_ID) REFERENCES PUBLIC.SHIRO_USER (ID) NOCHECK [23505-176]
Похоже, что версия драйвера H2 была обновлена в grails 2.4 и несовместима со схемой базы данных из предыдущей версии. Так что я могу с этим поделать? Как мне перенести мою базу данных на новую версию H2, чтобы она работала нормально?