H2数据库升级后提示‘SYSDATE’列不存在问题求助
解决方案
调整H2 JDBC URL参数
在现有连接URL里加上SYSDATE_AS_FUNCTION=FALSE,让H2在Oracle兼容模式下接受无括号的SYSDATE作为默认值:jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;SYSDATE_AS_FUNCTION=FALSE这个参数会让H2把
SYSDATE当成Oracle风格的内置变量,不用强制加括号调用。用Liquibase数据库条件适配
不想改URL的话,直接在Liquibase脚本里针对不同数据库设置对应默认值,Oracle保留SYSDATE,H2用带括号的SYSDATE():<column name="CREATION_DATE" type="TIMESTAMP(6)"> <defaultValueComputed dbms="oracle">SYSDATE</defaultValueComputed> <defaultValueComputed dbms="h2">SYSDATE()</defaultValueComputed> </column>改用通用兼容的默认值
如果想让脚本更通用,换成CURRENT_TIMESTAMP就行——Oracle 11g及以上版本和H2都原生支持这个函数,不用区分数据库:<column name="CREATION_DATE" type="TIMESTAMP(6)"> <defaultValueComputed>CURRENT_TIMESTAMP</defaultValueComputed> </column>
内容的提问来源于stack exchange,提问作者phildeg31
相关产品推荐
相关产品推荐

