2013-10-07 28 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解決了'??'對我來說錯誤。