2013-05-16 320 views
1


我正在使用liquibase和hsqldb數據庫。
我有一個.sql文件,其中包含用於在引導程序中填充數據庫的'insert'指令,但是如果一個字符串包含兩個彼此靠近的減號,它將被解釋爲註釋而不是字符串。
在這裏,在由liquibase加載的.sql文件,我的SQL指令:用liquibase轉義sql文件中的註釋

INSERT INTO user (id,firstname,lastname,mystring) VALUES 
(11,'Wendy','Salinas','this is my string--and it continues'), 
(12,'Kirsten','Parker','this is the string of Kirsten') 

我的堆棧跟蹤:

liquibase.exception.DatabaseException: Error executing SQL INSERT INTO user  (id,firstname,lastname,mystring) VALUES 
(11,'Wendy','Salinas','this is my string 
(12,'Kirsten','Parker','this is the string of Kristen') 
Caused by: java.sql.SQLSyntaxErrorException: unexpected token: KIRSTEN required:) : line: 12 
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) 
at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source) 
at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264) 
at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264) 
at liquibase.executor.jvm.JdbcExecutor$1ExecuteStatementCallback.doInStatement(JdbcExecutor.java:92) 
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55) 

有沒有辦法逃避由liquibase消耗的SQL文件中的字符串意見?
如何在liquibase使用的.sql文件中的字符串中轉義' - '?

+1

你應該在Liquibase論壇中報告這個。聽起來像一個錯誤。 –

+0

是的,我做到了。 http://forum.liquibase.org/#Topic/49382000000708003但目前沒有答案 – daniele

回答

0

HSQLDB可以讓你打破字符串中的兩個部分解決這一限制:

INSERT INTO user (id,firstname,lastname,mystring) VALUES 
(11,'Wendy','Salinas','this is my string-' '-and it continues'), 
(12,'Kirsten','Parker','this is the string of Kirsten') 

在下一版本2.3.0,您還可以使用Unicode字符串與用戶定義的逃逸。