ORA-01882: 在 Liquibase Gradle 插件中找不到时区
ORA-01882: timezone region not found in Liquibase Gradle plugin
在我们的项目中,我们使用 Liquibase gradle 插件。最近,我们将 ojdbc8 插件更新到版本 18.3.0.0。不幸的是,它导致我们的 Liquibase 任务失败并显示 ORA-01882:未找到时区区域。我找到了这个错误的一些解决方案(例如:ORA-01882: timezone region not found),但我不知道如何将 -Duser.timezone 或 -Doracle.jdbc.timezoneAsRegion 属性 添加到 gradle 任务。我尝试了不同的方法,但没有成功。
这就是我们 build.gradle 的一些关键部分的样子:
liquibase {
activities {
oracle {
changeLogFile "$liquibasePath/db.changelog-master.xml"
driver liquibaseProps['oracle.driver']
url "jdbc:oracle:thin:@${liquibaseProps['oracle.ip.port']}:${liquibaseProps['oracle.schema']}"
username liquibaseProps['oracle.username']
password liquibaseProps['oracle.password']
outputDefaultSchema false
outputDefaultCatalog false
}
}
}
def generate(taskName, taskDescription, generateCommand) {
project.task(taskName, type: LiquibaseTask) {
group = 'Liquibase'
description = taskDescription
inputs.property('databases', getRunList())
inputs.dir liquibasePath
outputs.dir sqlScriptsPath
doLast {
new LiquibaseSqlCleanupTask(sqlScriptsPath).execute()
}
}
}
当 运行 gradle 时,您需要将其设置为系统 属性。相关文档位于 https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_system_properties,但这里是 copy/paste 最相关的信息:
Using the -D command-line option, you can pass a system property to
the JVM which runs Gradle. The -D option of the gradle command has the
same effect as the -D option of the java command.
You can also set system properties in gradle.properties files with the
prefix systemProp.
因此您可以在项目的根目录中创建一个 gradle.properties
文件,内容如下:
systemProp.oracle.jdbc.timezoneAsRegion=false
在我们的项目中,我们使用 Liquibase gradle 插件。最近,我们将 ojdbc8 插件更新到版本 18.3.0.0。不幸的是,它导致我们的 Liquibase 任务失败并显示 ORA-01882:未找到时区区域。我找到了这个错误的一些解决方案(例如:ORA-01882: timezone region not found),但我不知道如何将 -Duser.timezone 或 -Doracle.jdbc.timezoneAsRegion 属性 添加到 gradle 任务。我尝试了不同的方法,但没有成功。
这就是我们 build.gradle 的一些关键部分的样子:
liquibase {
activities {
oracle {
changeLogFile "$liquibasePath/db.changelog-master.xml"
driver liquibaseProps['oracle.driver']
url "jdbc:oracle:thin:@${liquibaseProps['oracle.ip.port']}:${liquibaseProps['oracle.schema']}"
username liquibaseProps['oracle.username']
password liquibaseProps['oracle.password']
outputDefaultSchema false
outputDefaultCatalog false
}
}
}
def generate(taskName, taskDescription, generateCommand) {
project.task(taskName, type: LiquibaseTask) {
group = 'Liquibase'
description = taskDescription
inputs.property('databases', getRunList())
inputs.dir liquibasePath
outputs.dir sqlScriptsPath
doLast {
new LiquibaseSqlCleanupTask(sqlScriptsPath).execute()
}
}
}
当 运行 gradle 时,您需要将其设置为系统 属性。相关文档位于 https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_system_properties,但这里是 copy/paste 最相关的信息:
Using the -D command-line option, you can pass a system property to the JVM which runs Gradle. The -D option of the gradle command has the same effect as the -D option of the java command.
You can also set system properties in gradle.properties files with the prefix systemProp.
因此您可以在项目的根目录中创建一个 gradle.properties
文件,内容如下:
systemProp.oracle.jdbc.timezoneAsRegion=false