Liquibase Offline: неправильный драйвер для заданного URL базы данных - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь просто сгенерировать сценарии SQL для базы данных Mysql.Для этого я использую плагин maven liquibase с целью udateSql:

        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>3.0.5</version>
            <configuration>
                <propertyFile>src/main/resources/liquibase/liquibase.properties</propertyFile>
            </configuration>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>updateSQL</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Это прекрасно работает с файлом liquibase.properties, настроенным для доступа к уже запущенному серверу MySql:

#liquibase.properties
driver: com.mysql.cj.jdbc.Driver
classpath: lib/mysql-connector-java-5.0.5-bin.jar
url:jdbc:mysql://localhost:3306/mydb?createDatabaseIfNotExist=true
username: root
password: pass
changeLogFile:changelog-master.xml
logLevel: finest

Однако я хочу просто сгенерировать сценарии без работающей БД.Для этого я хочу использовать функцию автономной базы данных.Теоретически, достаточно liquibase.properties, подобного этому:

#liquibase.properties
url:offline:mysql?catalog=mydb
changeLogFile:changelog-master.xml
logLevel: finest

Однако, если я делаю это так, он жалуется на то, что не настроен драйвер.Если я добавлю драйверы, как раньше:

#liquibase.properties
driver: com.mysql.cj.jdbc.Driver
classpath: lib/mysql-connector-java-5.0.5-bin.jar
url:offline:mysql?catalog=avisporra
username:null
password:null
changeLogFile:changelog-master.xml
logLevel: finest

Я получу следующую ошибку:

liquibase.exception.DatabaseException: Connection could not be created to offline:mysql?catalog=mydb with driver com.mysql.cj.jdbc.Driver.  Possibly the wrong driver for the given database URL 

Я что-то упускаю из-за того, как использовать автономный URL?Спасибо за вашу помощь :)

1 Ответ

0 голосов
/ 29 сентября 2019

Таким образом, проблема заключается в версии плагина, которую я использую.Я скопировал конфигурацию плагина из документации liquibase для плагина Maven , которая, к сожалению, указывает на старую версию плагина (версия 3.0.5).Автономный URL был добавлен в 3.1.Так что, просто изменив версию плагина на самую новую (сейчас это версия 3.6.1), автономный URL будет работать без проблем.Таким образом, в файле pom.xml версия плагина должна выглядеть следующим образом:

            <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <propertyFile>src/main/resources/liquibase/liquibase.properties</propertyFile>
            </configuration>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>updateSQL</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

И аналогично liquibase.properties:

#liquibase.properties
url:offline:mysql
changeLogFile:changelog-master.xml
logLevel: finest

При этом он будет генерировать сценарии SQLпод /target/liquibase без необходимости запуска сервера MySql.

...