2017-02-19 3 views
1

Я пытаюсь запустить тест интеграции с пружинным загрузки и получить следующее сообщение об ошибке:Может ли SchedulerFactory создавать таблицы для кварца при запуске?

Caused by: org.springframework.context.ApplicationContextException: 
Failed to start bean 'SchedulerFactory'; nested exception is org.springframework.scheduling.SchedulingException: 
Could not start Quartz Scheduler; nested exception is org.quartz.SchedulerConfigException: 
Failure occured during job recovery. [See nested exception: 
org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Table "QRTZ_LOCKS" not found; SQL statement: 
SELECT * FROM QRTZ_LOCKS UPDLOCK WHERE LOCK_NAME = ? [42102-193] [See nested exception: org.h2.jdbc.JdbcSQLException: Table "QRTZ_LOCKS" not found; SQL statement: 
SELECT * FROM QRTZ_LOCKS UPDLOCK WHERE LOCK_NAME = ? [42102-193]]] 
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176) 

Очевидно, что QRTZ таблицы не были созданы. I может создать их вручную, но верно ли, что весенний ботинок не способен создавать их, когда их не существует? Выглядит очень страшно, если так, потому что эти таблицы нужно создавать только один раз при запуске, а SQL-операторов вроде create if not exisit. Так может ли пружинная загрузка автоматически создает таблицы QRTZ?

+0

В сообщении об ошибке говорится, что нет таблицы с именем QRTZ_LOCKS. Вы говорите: «Таблицы« QRTZ »не были созданы»; вы имеете в виду, что есть код для создания таблицы QRTZ_LOCKS перед кодом, который выкинул это исключение? – arcy

+0

'есть код для создания ...' Да, вопрос об этом. Существует ли этот код или нет? – Cherry

ответ

1

Нет, весенняя загрузка не создает автоматически кварцевые столы. Если вы хотите создать это автоматически, вам нужно использовать функцию инициализатора источника данных Spring Boot, которая автоматически создаст таблицы для вас.

Как вы уже знаете, весенний ботинок сдает большой каркас, экономя разработчику много времени и энергии при разработке пружинного приложения. Одной из его замечательных возможностей является инициализация базы данных. Вы можете использовать весеннюю загрузку для инициализации своей базы данных sql.

org.springframework: зависимость spring-jdbc - это зависимость, которая помогает с инициализацией базы данных.

Вам просто нужно добавить файл schema.sql в папку ресурсов, чтобы он был загружен в classpath. Файл schema.sql будет содержать все определения таблиц, необходимые для нашей базы данных, здесь кварцевая схема (найти это внутри кварцевого распределения). Следующий файл для добавления - data.sql в папку ресурсов. Этот файл будет содержать инструкции sql, необходимые для заполнения нашей базы данных. Игнорируйте это для кварца.

При инициализации весенний ботинок будет искать файлы schema.sql и data.sql и выполнять их с помощью инициализатора базы данных.

Смежные вопросы