Liquibase выдает ошибку, когда в yaml-файле, содержащем SQL, есть точки с запятой

Trozza спросил: 07 октября 2018 в 10:17 в: mysql

Я использую Liquibase для обновления некоторых таблиц, и мне кажется, что я сталкиваюсь с ошибкой, что всякий раз, когда в моем файле .yaml есть ;, он выдает ошибку (только частично это повторяет одно и то же сообщение об ошибке):

SEVERE 1/11/18 11:39 AM: liquibase: _master.xml: Tables / Team / Team.updateTeamNames.yaml :: 1 :: mayj4: Изменить таблицы набора / Team / Team.updateTeamNames.yaml :: 1 :: mayj4 не удалось. Ошибка: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'ОБНОВИТЬ Команда SET Name =' B 'WHERE Name =' Y '; UPDATE Team SET Name = 'C' WHERE Name 'в строке 1 [Ошибка SQL: UPDATE Team SET Name =' A 'WHERE Name =' X '; Команда SET UPDATE Name = 'B' WHERE Name = 'Y'; SET UPDATE Team SET Name = 'C' WHERE Name = 'Z'] liquibase.exception.DatabaseException: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с 'UPDATE Team SET Name =' B'WHERE Name = 'Y'; UPDATE Team SET Name = 'C' WHERE Name 'в строке 1 [Ошибка SQL: UPDATE Team SET Name =' A 'WHERE Name =' X '; ОБНОВЛЕНИЕ Команда SET Name = 'B' WHERE Name = 'Y'; ОБНОВЛЕНИЕ Команда SET Name = 'C' WHERE Name = 'Z']

Я также использую эту команду:

liquibase --driver = com.mysql.cj.jdbc.Driver --classpath = C: \ mysql-connector-java-8.0.13 --logLevel = суровый --changeLogFile = _master.xml --url ="jdbc: mysql:// localhost : 3306 / resource? UseSSL = false & allowPublicKeyRetrieval = true"--username = root --password = badpassword123 update

Вот файл .yaml, который содержит полный SQL.

---
databaseChangeLog:
- changeSet:
    author: mayj4
    id: 1
    changes:
        - sql:
            sql: 
                UPDATE Team SET Name = 'A' WHERE Name = 'X';
                UPDATE Team SET Name ='B' WHERE Name ='Y';
                UPDATE Team SET Name ='C' WHERE Name ='Z';

Что я использую

  • Liquibase 3.6.2
  • MySQL Connector Java 8.0.13
  • MySQL Workbench & Сервер 8.0.13

Я пытался добавить splitStatements: true в .yaml, но это не имеет значения, как предлагается согласно документации Liquibase.

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

0 ответов