Aar*_*ron 7 java amazon-ec2 amazon-rds playframework
我有一个小网站,我使用Play框架构建,我试图在EC2服务器上针对Amazon RDS实例运行.我可以在我的机器上运行应用程序对抗RDS实例,一切正常.但是当我将它部署到我的EC2服务器时,它会收到以下错误:
The last packet successfully received from the server was 1,282,977,731,085 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.
at play.db.DBPlugin.onApplicationStart(DBPlugin.java:87)
at play.Play.start(Play.java:381)
at play.Play.init(Play.java:247)
at play.server.Server.main(Server.java:85)
Caused by: java.net.ConnectException: Connection refused
我的第一个想法是它是某种安全设置,但我有一个基于Spring的应用程序在Tomcat上运行,在相同的EC2服务器上使用相同的用户名和密码连接到相同的RDS实例,它工作得很好.只有Play应用有连接问题.
我似乎无法解释为什么会发生这种情况,或者如何解决它的想法.
以前见过这样的人吗?
问题出在 application.conf 文件上。如果您像这样指定本地数据库:
db=mysql:root:pass@db
Run Code Online (Sandbox Code Playgroud)
和你的产品数据库是这样的:
%prod.db.url=jdbc:mysql://<your-db-ip>:3306/db
%prod.db.user=db_user
%prod.db.pass=db_pass
Run Code Online (Sandbox Code Playgroud)
尝试在生产环境中运行时您会收到此错误,因为 Play! 实际上是尝试使用 db=mysql:root:pass@db 参数进行连接,因为 prod 参数不会单独覆盖该参数。要解决此问题,请确保在本地和产品中以相同的方式连接到数据库。这对我有用:
db.url=jdbc:mysql://localhost:3306/db
db.user=root
db.pass=pass
%prod.db.url=jdbc:mysql://<your-db-ip>:3306/db
%prod.db.user=db_user
%prod.db.pass=db_pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2386 次 |
| 最近记录: |