我使用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中的列。
谢谢! 史蒂夫·奈斯特