2015-05-05 32 views
1

我有一個現有的項目,目前使用flyway-ant,版本2.2.1進行遷移。新flyway版本 - sql錯誤

由於幾個原因,我需要使用3.2.1(修復不同的行結束表)。 不幸的是,一旦我嘗試建立一個空的測試數據庫與遷徙路線3.2.1,我得到以下錯誤從Oracle DB:

Migration V1_15_1_3__AddCommandParamSDCardLogs.sql failed 
--------------------------------------------------------- 
SQL State : 42000 
Error Code : 911 
Message : ORA-00911: invalid character 
Location : /Volumes/dev/cs/IdeaProjects/grd/db/src/sql/1.15/V1_15_1_3__AddCommandParam.sql 
Line  : 1 
Statement : INSERT INTO T_RD_COMMAND (ID, COMMAND_ID, NAME, DISPLAY_ORDER, DISPLAY_NAME, CREATION_TIME, LAST_UPDATE_TIME) VALUES (SEQ_RD_COMMAND_PARAM.NEXTVAL, (SELECT ID FROM T_RD_COMMANDS WHERE COMMAND_NAME = 'GET_LOGS'), 'fromDate', 1, 'From Date', SYSDATE, SYSDATE); 
INSERT INTO T_RD_COMMAND (ID, COMMAND_ID, NAME, DISPLAY_ORDER, DISPLAY_NAME, CREATION_TIME, LAST_UPDATE_TIME) VALUES (SEQ_RD_COMMAND_PARAM.NEXTVAL, (SELECT ID FROM T_RD_COMMANDS WHERE COMMAND_NAME = 'GET_LOGS'), 'toDate', 1, 'To Date', SYSDATE, SYSDATE); 

任何想法,爲什麼出現這種情況?它可能是飛路上的錯誤嗎?使用flyway 2.2.1運行遷移一切正常,運行與flyway 3.2.1完全相同的遷移,oracle報告此錯誤。

Btw。它是飛螞蟻。

解析的INSERT語句:

INSERT 
INTO T_RD_COMMAND 
    (
    ID, 
    COMMAND_ID, 
    NAME, 
    DISPLAY_ORDER, 
    DISPLAY_NAME, 
    CREATION_TIME, 
    LAST_UPDATE_TIME 
) 
    VALUES 
    (
    SEQ_RD_COMMAND_PARAM.NEXTVAL, 
    (SELECT ID FROM T_RD_COMMANDS WHERE COMMAND_NAME = 'GET_LOGS' 
    ), 
    'toDate', 
    1, 
    'To Date', 
    SYSDATE, 
    SYSDATE 
); 
+0

INSERT語句中看起來好像沒什麼問題。你能對數據庫執行這個查詢嗎? 'SELECT ID FROM T_RD_COMMANDS WHERE COMMAND_NAME ='GET_LOGS''並將結果附加到您的問題中? – mmmmmpie

+0

曾經爲此記錄過的錯誤?我也遇到過它。我的假設,基於我的腳本中容易遇到的線條,是它在字符串中從日期/日期窒息。 – Kyle

+0

發現一個看起來是有問題的錯誤,在答案中指出。 – Kyle

回答

1

這看起來像一個解析問題。請在問題跟蹤器中提出包括該陳述的錯誤報告。

+0

阿克塞爾,我在我的回答中注意到了問題#。我可以虛心地建議優先考慮這個嗎?似乎有很多關於這個bug的評論,並且很容易遇到(例如,插入'from'這個詞)。解決方法是用串聯分割這些字符串,這當然會使遷移的可讀性降低。 – Kyle