我想连接到Heroku数据库,我尝试像他们的教程一样复制模型: https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#using-the-jdbc_database_url
执行以下行时
URI dbUri = new URI(System.getenv("postgresql://osnvehqhufnxzr:TS3Qt37c_HHbGRNKw3yk7g88fp@ec2-54-225-93-34.compute-1.amazonaws.com:5432/d39mfq0odt56bv?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory"));
我收到错误
java.lang.NullPointerException
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.<init>(Unknown Source)
这是如何引起的?如何解决?
答案 0 :(得分:2)
当您创建URI对象时,您正在使用System.getenv()
,它试图获取名为&#34; postgresql://osnvehq ...。&#34;的系统环境变量的值。 ,这当然不存在,不是你的意图。删除System.getenv()并使用url字符串。
建议:在使用连接返回之前,您可以在变量中添加一些System.out.println()语句并检查控制台输出以确保正确地从中提取URL,用户名和密码。 URI。
另外,请说那些不是你的数据库的真实用户和密码现在暴露给整个世界...如果这些是真的,你需要立即更改它们 - 不是在这里,不是cat已经不在了,在实际数据库中将其更改。
修改强>
好的,我只是看了一下heroku链接,那个教程告诉你的是使用new URI(System.getenv("DATABASE_URL"))
并按原样保留DATABASE_URL部分。这是一个包含实际连接信息的环境变量。