我正在为Oracle 12c数据库使用Liquibase maven插件,我在运行update命令时遇到以下错误:
无法执行目标org.liquibase:liquibase-maven-plugin:3.4.1:update(默认)on project liquibase:设置或运行Liquibase时出错:liquibase.exception.DatabaseException:java.sql.SQLException:ORA- 28040:没有匹配的身份验证协议
我看到有关此问题的相关堆栈溢出帖子,建议更改sqlnet.ora文件,但以下命令通过使用完全相同的更改日志通过命令行完美运行:
java -jar~ / .m2 / repository / org / liquibase / liquibase-core / 3.5.3 / liquibase-core-3.5.3.jar --driver = oracle.jdbc.OracleDriver --classpath = / Users / nsalvi / Downloads / ojdbc6.jar --url =“fake url”--username =“假用户名”--password =“假密码”--changeLogFile = / Users / nsalvi / Downloads / liquibase-example-master-2 / src / main / resources / db / dbChangelog.xml更新
上面我引用了我本地的驱动程序类路径。
我的pom片段如下所示:
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>${liquibase.version}</version>
<configuration>
<propertyFileWillOverride>true</propertyFileWillOverride>
<propertyFile>src/main/resources/liquibase.properties</propertyFile>
</configuration>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>update</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${oracle.version}</version>
</dependency>
</dependencies>
</plugin>
当我运行maven install时,我收到了非身份验证协议错误。我的数据库更改日志如下:
liquibase.properties:
contexts: local
changeLogFile: db/dbChangelog.xml
driver: oracle.jdbc.OracleDriver
url: fake url
username: fake username
password: fake password
verbose: true
dropFirst: false
dbChangelog.xml:
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.8"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.8
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.8.xsd">
<preConditions>
<dbms type="oracle" />
<runningAs username="fake" />
</preConditions>
<changeSet id="1" author="nishant">
<preConditions onFail="WARN">
<sqlCheck expectedResult="9">select count(*) from CA_PROJECT_T</sqlCheck>
</preConditions>
<comment>Comments should go after preCondition. If they are before then liquibase usually gives error.</comment>
</changeSet>
</databaseChangeLog>
有什么我想念的吗? P.S.-当有问题的数据库是mysql而不是oracle时,maven插件工作得很好,我不认为在sqlnet.ora文件中进行更改是问题,因为从命令行运行时查询工作正常。
提前致谢!
答案 0 :(得分:0)
您可以使用以下阶段之一(取自maven网站): 验证 - 验证项目是否正确并且所有必要信息都可用
- 编译 - 编译项目的源代码
- test - 使用合适的单元测试框架测试编译的源代码。这些测试不应要求打包代码或 部署
- package - 获取已编译的代码并将其打包为可分发的格式,例如JAR。
- 验证 - 对集成测试结果进行任何检查以确保符合质量标准
- 安装 - 将软件包安装到本地存储库,以便在本地其他项目中用作依赖项
- deploy - 在构建环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享。