H2对RENAME COLUMN语句的Oracle兼容性

时间:2015-04-20 18:57:32

标签: oracle h2

我使用Oracle进行生产,使用H2作为内存测试数据库。我在"重命名列"的Oracle兼容性方面遇到了问题。言。

具体来说,Oracle声明是:

改变表格" SOME_TABLE"重命名列" COLUMN_A"到" COLUMN_B" ;

我使用Spring和Liquibase来设置测试环境并相信我已经指定"使用Oracle兼容模式"正确的,但这句话被H2拒绝如下:

引起:org.h2.jdbc.JdbcSQLException:SQL语句中的语法错误

"ALTER TABLE ""SOME_TABLE"" RENAME COLUMN[*] ""COLUMN_A"" TO ""COLUMN_B"" "; expected "TO"; SQL statement:
alter table "SOME_TABLE" rename column "COLUMN_A" to "COLUMN_B" [42001-174]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:332)
    at org.h2.message.DbException.getSyntaxError(DbException.java:197)
    at org.h2.command.Parser.getSyntaxError(Parser.java:504)
    at org.h2.command.Parser.read(Parser.java:2867)
    at org.h2.command.Parser.parseAlterTable(Parser.java:4971)
    at org.h2.command.Parser.parseAlter(Parser.java:4412)
    at org.h2.command.Parser.parsePrepared(Parser.java:316)
    at org.h2.command.Parser.parse(Parser.java:289)
    at org.h2.command.Parser.parse(Parser.java:265)
    at org.h2.command.Parser.prepareCommand(Parser.java:226)
    at org.h2.engine.Session.prepareLocal(Session.java:437)
    at org.h2.engine.Session.prepareCommand(Session.java:380)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1138)
    at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:168)
    at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:156)
    at   liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:294)

我通过研究发现,此时H2可能无法实现此级别的兼容性。是否可以编写任何扩展或我可以采取的任何其他操作来重命名Oracle和H2中的列。

谢谢! 史蒂夫·奈斯特

0 个答案:

没有答案