2012-11-21 106 views
0

我在Heroku上部署了一個應用程序,並嘗試連接Amazon RDS附加組件。我創建了Amazon RDS實例並上傳了我的Mysql數據庫。然後我按照heroku文檔中介紹的有關如何連接到Amazon RDS的所有步驟進行操作,包括授權過程。無法將Heroku應用程序連接到Amazon RDS

https://devcenter.heroku.com//articles/amazon_rds

我還建立了數據庫URL在亞馬遜RDS插件。我能夠從一個MySQL管理工具(使憑據和主機地址是正確的)

當我運行我的應用程序我得到下面的異常連接到我的亞馬遜實例:

org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 
    org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:138) 
    org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) 
    org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125) 
    org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30) 
    org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22) 
    org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:32) 
    org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24) 
    org.postgresql.Driver.makeConnection(Driver.java:393) 
    org.postgresql.Driver.connect(Driver.java:267) 
    org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) 
    org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 
    org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) 
    org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) 
    org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) 
    org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 
    org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:71) 
    org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) 
    org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) 
    org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160) 
    org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81) 
    org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473) 
    org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:60) 
    org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:70) 
    org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:59) 
    org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:377) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) 
    org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335) 
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    $Proxy19.listPeople(Unknown Source) 
    com.example.controller.PersonController.listPeople(PersonController.java:27) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:616) 
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) 
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

root cause 

java.net.ConnectException: Connection timed out 
    java.net.PlainSocketImpl.socketConnect(Native Method) 
    java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327) 
    java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193) 
    java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180) 
    java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) 
    java.net.Socket.connect(Socket.java:546) 
    java.net.Socket.connect(Socket.java:495) 
    java.net.Socket.<init>(Socket.java:392) 
    java.net.Socket.<init>(Socket.java:206) 
    org.postgresql.core.PGStream.<init>(PGStream.java:62) 
    org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:76) 
    org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) 
    org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125) 
    org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30) 
    org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22) 
    org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:32) 
    org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24) 
    org.postgresql.Driver.makeConnection(Driver.java:393) 
    org.postgresql.Driver.connect(Driver.java:267) 
    org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) 
    org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 
    org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) 
    org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) 
    org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) 
    org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 
    org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:71) 
    org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) 
    org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) 
    org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160) 
    org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81) 
    org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473) 
    org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:60) 
    org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:70) 
    org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:59) 
    org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:377) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) 
    org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335) 
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    $Proxy19.listPeople(Unknown Source) 
    com.example.controller.PersonController.listPeople(PersonController.java:27) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:616) 
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) 
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
     org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
     org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
     org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
     org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
     org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
     org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

任何人有一個想法爲什麼發生這種情況?我有雙重檢查證書和主機地址是正確的

+0

您是否確認您爲Heroku訪問RDS而添加了授權(使用Amazon控制檯或文章中給出的命令)? –

+0

是的,因爲它在Heroku doc上建議我輸入以下內容: $ rds-authorize-db-security-group-ingress -db-security-group-name default \ -ec2-security-group-name默認\ --ec2-security-group-owner-id 098166147350 \ --aws-credential-file ../credential-file-path.template 而且它似乎是正確的,因爲當我試圖再次運行它時我得到這樣的信息:「格式錯誤的輸入 - 授權已存在 :所有者標識爲098166147350」 – panipsilos

回答

2

那麼我終於弄清楚什麼是錯的。我最初在愛爾蘭創建了一個Amazon RDS實例(因爲我居住在歐洲)。然而,Heroku無法連接到愛爾蘭實例(因爲顯然他們居住在美國,他們在美國使用EC實例)。所以我在美國東部(弗吉尼亞州)又創造了另一個實例並且工作了!我不知道它是否也適用於美國西部(俄勒岡,加利福尼亞州)的其他亞馬遜網站。

相關問題