对PostgreSQL 9.6使用Liquibase 3.5.3命令行我无法使用包含@和!的密码的用户(例如postgres)进行身份验证字符。如果我更改密码以删除它们身份验证工作。其他用户也会这样。密码用@和!是正确的,并在其他应用程序中使用。
我正在使用PostgreSQL的jdbc 4.2驱动程序和java 1.8运行时。
运行Liquibase时出现意外错误:org.postgresql.util.PSQLException: 致命:用户" postgres"
的密码验证失败
使用jdbc和Liquibase时,密码有什么独特之处吗?
答案 0 :(得分: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这样的构建工具,它们的参考块将帮助你跳过这个问题。