2013-10-07 27 views
2

我正在尝试将Flyway潜在地用于我们的项目,因此我有一个非常简单的迁移脚本。我似乎已经一些设置不当但是 - 迁徙路线连接到我的数据库(SQL Server 2008 R2中)成功创建元数据表,但是当我运行该脚本,我得到Flyway在迁移脚本上抛出错误

[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 

望着调试日志,迁徙路线输出:

[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 

我不知道那里的问号从何而来,为什么文本中有空格。有任何想法吗?

+0

我对Flyway不太满意,但是你不需要用';'来结束你的SQL语句吗?由于你的脚本是一个SQL文件... – cheffe

+2

这可能是一个编码问题? Flyway期待UTF-8。你使用了哪一个? –

+0

这是UTF-8的结果 - 我使用的是由SQL Server Management Studio 2008生成的文件。我个人的脚本现在运行正常,但我的初始数据库迁移全部失败。现在我只需要手动处理最初的迁移,让Flyway处理补丁脚本。 –

回答

2

这种类型的输出表示UTF,但是以16位形式,在开头处带有魔力字符。这个?空间是赠品。

几个MS工具在本地说话,而大多数Unix工具使用UTF-8。

1

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