2016-11-18 97 views
1

使用Liquibase 3.5.3命令行对PostgreSQL 9.6我无法使用用户(例如postgres)进行身份验证,密码中包含@和!字符。如果我更改密码以删除它们的身份验证工作。其他用户也会发生这种情况。带@和!的密码是正确的并在其他应用程序中使用。Liquibase无法使用@和!验证用户身份输入密码

我在使用java 1.8运行时从PostgreSQL使用jdbc 4.2驱动程序。

意外的错误运行Liquibase:org.postgresql.util.PSQLException: FATAL:密码验证失败的用户 “Postgres的”

有什么关于使用JDBC和Liquibase当密码独特之处?

+1

您是在使用Liquibase时还是在直接使用JDBC时使用它? –

+1

[如果密码有特殊字符,不能使用JDBC连接到oracle数据库](http://stackoverflow.com/questions/21908610/not-able-to-connect-to-oracle-database-using- jdbc-if-password-is-having-special) – dbf

+0

你怎么连接?使用春季liquibase集成或直接使用liquibase本身?告诉我们你的代码。 –

回答

0

如果您使用命令行,为每个特殊字符添加反斜杠将解决该问题。

java -jar liquibase.jar \ 
    --driver=oracle.jdbc.OracleDriver \ 
    --classpath=\path\to\classes:jdbcdriver.jar \ 
    --changeLogFile=com/example/db.changelog.xml \ 
    --url="jdbc:oracle:thin:@localhost:1521:oracle" \ 
    --username=scott \ 
    --password=\!\@tiger\$\%\ 
    update 

或者您可以使用liquibase属性文件并将所有参数放在该文件中。这样,您可以在密码中使用原始特殊字符。

如果您使用像Gradle或Ant这样的构建工具,它们的参考块将帮助您跳过此问题。

+0

这可能会起作用,我只是真的需要支持!我最终转而使用不同的迁移工具,不需要在线命令转义密码。 –

+0

@Corey泰勒,你介意告诉我你切换到什么工具?飞路? – Zingoer

+0

是的,我切换到了Flyway。它不提供扩展格式作为liquibase,但它最初让我开始运行。 –

相关问题