У меня есть приложение Spring Boot 2 с запущенной базой данных mysql, и я хотел добавить планировщик Quartz.Конфигурация:
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=always
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
Но при запуске он не создает таблицы базы данных и дает сбой при доступе к таблицам QRTZ_ *.Я отладил, чтобы найти причину, которую я нашел в классе ScriptUtils
, вызванном Spring для выполнения кварцевого сценария tables_mysql_innodv.sql
.Исключение намеренно подавлено:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: у вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с 'DROP TABLE ЕСЛИ СУЩЕСТВУЕТ QRTZ_PAUSED_TRIGGER_GRPS;DROP TABLE IF EXISTS QRTZ_SCHEDUL 'в строке 9
Я не вижу никакой синтаксической ошибки, и когда я выполняю тот же самый скрипт непосредственно в MySQL Workbench, он работает нормально, то есть создает таблицы и т. Д.
Источник выполненного сценария запуска доступен здесь .Исключение в этой строке .Есть одно наблюдение, которое меня смущает: код в том же методе пытается разделить операторы SQL, но извлекаются только 2 оператора - первая строка #
и оставшийся скрипт.Может быть, это действительно проблема.
Итак, как я могу это исправить?
Информация о версии:
- Spring Boot 2.0.2.RELEASE
- mysql: mysql-connector-java: 5.1.46
- org.quartz-планировщик: кварц: 2.3.0