【问题标题】:Flyway throwing error on migration script迁移脚本上的 Flyway 抛出错误
【发布时间】:2019-06-07 04:20:31
【问题描述】:

我正在尝试可能在我们的项目中使用的 Flyway,因此我有一个非常简单的迁移脚本。然而,我似乎设置错误 - flyway 成功连接到我的数据库(SQL Server 2008 R2)以创建元数据表,但是当我运行脚本时,我得到了

 [ERROR] Failed to execute goal com.googlecode.flyway:flyway-maven-plugin:2.2.1:migrate      (default-cli) on project persistence: com.googlecode.flyway.cor
 e.api.FlywayException: Migration of schema [dbo] to version 1.1 failed! Changes successfully rolled back. Incorrect syntax near '?'. -> [Help 1]

我的脚本是:

 ALTER TABLE msg.Message
 ADD Deleted bit NULL

查看调试日志,flyway 输出:

 [DEBUG] Executing SQL: ??A L T E R   T A B L E   m s g . M e s s a g e

  A D D   D e l e t e d   b i t   N U L L

我不知道问号是从哪里来的,也不知道为什么文本中有空格。有什么想法吗?

【问题讨论】:

  • 我对 Flyway 不太有信心,但是您不需要以 ; 结束您的 SQL 语句吗?由于您的脚本是一个 SQL 文件 ...
  • 这可能是编码问题吗? Flyway 需要 UTF-8。你用的是哪一个?
  • 原来是 UTF-8 - 我使用的是 SQL Server Management Studio 2008 生成的文件。我的各个脚本现在运行正常,但我的初始数据库迁移完全失败。现在我将手动处理初始迁移,让 Flyway 处理补丁脚本。
  • 您是否尝试将编码属性更改为适合您环境的正确值?
  • 我认为这与此有关 - 现在看来工作正常,谢谢。

标签: java flyway


【解决方案1】:

这种输出表示 UTF,但是是 16 位格式,开头有一个魔术字符。这 ?空间是赠品。

一些 MS 工具本身就是这样说的,而大多数 Unix 工具使用 UTF-8。

【讨论】:

    【解决方案2】:

    将 sql 迁移文件的编码更改为 UTF-8 解决了 '??'对我来说是错误的。

    【讨论】:

      【解决方案3】:

      更改文件的编码对我有用。我使用了文本编辑器(Notepad++):

      1. 在文本编辑器中打开文件。
      2. 在菜单中选择“编码”。
      3. 从选项列表中选择编码类型。
      4. 保存文件。

      【讨论】:

        猜你喜欢
        • 2021-11-22
        • 2018-02-28
        • 2011-11-05
        • 2021-02-07
        • 2020-08-17
        • 2016-03-12
        • 2018-05-25
        • 2017-03-16
        • 2021-11-20
        相关资源
        最近更新 更多