Автоматическое создание схемы для кварца и mysql терпит неудачу с MySQLSyntaxException - PullRequest
0 голосов
/ 11 июня 2018

У меня есть приложение 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

Ответы [ 3 ]

0 голосов
/ 13 апреля 2019

Добавьте следующее свойство в вашу конфигурацию, чтобы указать символ комментария:

spring.quartz.jdbc.comment-prefix=#
0 голосов
/ 27 апреля 2019

В файле свойств конфигурации YAML, как предлагает Муад Э.Л. Факир, я добавил:

   quartz:
      job-store-type: jdbc
      jdbc:
         initialize-schema: always
         comment-prefix: '#'
0 голосов
/ 11 июня 2018

Существует обходной путь:

  1. Скопируйте файл сценария tables_mysql_innodb.sql в папку ресурсов main / resources / org / quartz/impl/jdbcjobstore/tables_mysql_innodb.sql.Это будет воспринято при начальной загрузке вместо исходного файла.
  2. Удалите все строки комментариев в начале файла.Это проблемные строки для разбора в классе Spring ScriptUtils.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...