【问题标题】:Flyway only migrates one of my two configured schemasFlyway 仅迁移我的两个配置模式之一
【发布时间】:2016-09-08 10:51:43
【问题描述】:

我有一个 MySQL 5.7 实例,它需要两个具有相同架构的数据库。我正在尝试使用具有多个模式的 flyway 来实现这一点。我正在使用 Maven 插件和 MySQL 连接器的 v5.1.38。这是我的 POM 配置:

                <plugin>
                    <groupId>org.flywaydb</groupId>
                    <artifactId>flyway-maven-plugin</artifactId>
                    <version>4.0</version>
                    <configuration>
                        <url>jdbc:mysql://192.168.99.100:3306</url>
                        <user>root</user>
                        <password>mypassword</password>
                        <schemas>
                            <schema>stage</schema>
                            <schema>public</schema>
                        </schemas>
                    </configuration>
                </plugin>

从空数据库运行,这是输出:

[INFO] Database: jdbc:mysql://192.168.99.100:3306 (MySQL 5.7)
[INFO] Successfully validated 3 migrations (execution time 00:00.013s)
[INFO] Creating schema `stage` ...
[INFO] Creating schema `public` ...
[INFO] Creating Metadata table: `stage`.`schema_version`
[INFO] Current version of schema `stage`: 0
[INFO] Migrating schema `stage` to version 1 - initialize schema
[INFO] Migrating schema `stage` to version 2 - seed users
[INFO] Migrating schema `stage` to version 3 - create read items proc
[WARNING] DB: PROCEDURE stage.read_items does not exist (SQL State: 42000 - Error Code: 1305)
[INFO] Successfully applied 3 migrations to schema `stage` (execution time 00:01.824s).

它创建了两个模式,但只运行第一个模式的迁移。是我做错了什么,还是 Flyway 中的错误?

更新:

我尝试使用此配置为 Maven 插件创建两个执行:

                <plugin>
                    <groupId>org.flywaydb</groupId>
                    <artifactId>flyway-maven-plugin</artifactId>
                    <version>4.0.1</version>
                    <executions>
                        <execution>
                            <id>migrate-stage</id>
                            <goals>
                                <goal>migrate</goal>
                            </goals>
                            <configuration>
                                <url>jdbc:mysql://192.168.99.100:3306/stage</url>
                                <user>root</user>
                                <password>password</password>
                                <schemas>
                                    <schema>stage</schema>
                                </schemas>
                            </configuration>
                        </execution>
                        <execution>
                            <id>migrate-pub</id>
                            <goals>
                                <goal>migrate</goal>
                            </goals>
                            <configuration>
                                <url>jdbc:mysql://192.168.99.100:3306/public</url>
                                <user>root</user>
                                <password>password</password>
                                <schemas>
                                    <schema>public</schema>
                                </schemas>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

这给了我以下错误:

Unable to connect to the database. Configure the url, user and password!

【问题讨论】:

    标签: java mysql maven jdbc flyway


    【解决方案1】:

    这似乎类似于以下内容:Flyway database migration to multiple schemas
    正如 Fontaine 先生建议的那样,您应该针对这种情况拆分架构。
    我不确定模式标签的正确用法,因为我自己是 Flyway 的新手。
    希望这会有所帮助!

    【讨论】:

    • 是的,我确实看过那个答案,并尝试在 Maven 中创建单独的执行。我已经用这项工作的结果更新了我的问题。
    • 看起来正确,但我认为应该将目标标签添加到您的执行块中。目标应该针对您的方案表示迁移。
    • 糟糕 - 更新以反映我也添加了目标。相同的错误信息。我还尝试了在 url 和架构配置中包含架构名称的每种组合。没有运气。
    【解决方案2】:

    这不是我希望的答案,但在尝试了其他所有方法后,我最终只是为第二个模式复制了 SQL,在相应部分之前添加了 use public;use stage;

    【讨论】:

      猜你喜欢
      • 2015-01-03
      • 2017-08-14
      • 2021-12-18
      • 2015-02-17
      • 2012-12-20
      • 2015-05-04
      • 2023-03-05
      • 2019-12-27
      • 2013-03-03
      相关资源
      最近更新 更多