2016-10-29 6 views
1

したがって、私はboxfuseを使用してAWS EC2サービスにSpringブートプロジェクトをデプロイしました。すべてうまくいった。私は自分のWebアプリケーションにアクセスするとただし、アプリ自体は、SQL例外が表示されます。Boxfuseを使用したAWSのSpring-Boot - PostgreSQLの例外

Error querying database. Cause: org.postgresql.util.PSQLEception:ERROR:relation "table" does not exist 

は今、Webアプリケーションは、以下のん:それはPSQLデータベースに接続し、テーブルのいずれかにいくつかのものを照会します。私のlocalhostでは、すべてが完璧に動作します。今回の展開では、webappはAWS RDS Psqlデータベースを使用します。だから私は、ローカルのものではなくRDS DBのアクセスデータをリストアップするようにアプリのプロパティを変更し、boxfuseを通してクラウドにデプロイしました。春のためのapplication.propertiesファイルによって は次のようになります。春のプロジェクトのpom.xmlファイルで

spring.datasource.url=jdbc:postgresql://ec2instance:portnumber/Database 
spring.datasource.username= 
spring.datasource.password= 
spring.datasource.driver-class-name=org.postgresql.Driver 

、該当する依存関係が

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring --> 
<dependency> 
<groupId>org.mybatis.spring.boot</groupId> 
<artifactId>mybatis-spring-boot-starter</artifactId> 
<version>1.1.1</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> 
<dependency> 
<groupId>org.postgresql</groupId> 
<artifactId>postgresql</artifactId> 
<version>9.4.1211</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-aws-jdbc --> 
<dependency> 
<groupId>org.springframework.cloud</groupId> 
<artifactId>spring-cloud-aws-jdbc</artifactId> 
<version>1.1.3.RELEASE</version> 
</dependency> 

存在している私は何をしないのですか?私は手動でPostgreSQLをインストールするためにBoxfuseEC2インスタンスにSSHを手動でインストールする必要があったかもしれませんが、クラウド環境内の限られたBoxFuseアクセス権のためSSHできません。

boxfuseログファイル(最後の行)は、次のレンダリング:

2016-10-29 18:46:23.904 INFO 900 --- [nio-8080-exec-6] o.s.b.f.xml.XmlBeanDefinitionReader  : Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml] 
2016-10-29 18:46:24.052 INFO 900 --- [nio-8080-exec-6] o.s.jdbc.support.SQLErrorCodesFactory : SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana] 
2016-10-29 18:46:24.096 ERROR 900 --- [nio-8080-exec-6] com.vaadin.server.DefaultErrorHandler : 

org.springframework.jdbc.BadSqlGrammarException: 
### Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: relation "tablename" does not exist 
Position: 14 
### The error may exist in com/example/Service.java (best guess) 
### The error may involve defaultParameterMap 
### The error occurred while setting parameters 
### SQL: SELECT * FROM"tablename"ORDER BY x; 
### Cause: org.postgresql.util.PSQLException: ERROR: relation "tablename" does not exist 
Position: 14 ; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: relation "tablename" does not exist 
Position: 14 
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231) ~[spring-jdbc-4.3.3.RELEASE.jar!/:4.3.3.RELEASE] 
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) ~[spring-jdbc-4.3.3.RELEASE.jar!/:4.3.3.RELEASE] 
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75) ~[mybatis-spring-1.3.0.jar!/:1.3.0] 
[.........] 

誰もがアイデアを持っていますか? Postgresqlドライバ+ Spring-boot + aws接続の問題です... mybatisの何かがあるかもしれませんか? ここで苦労しています....

答えて

0

問題はデータベースが空であるように見えますが、アプリケーションでは特定のテーブルが存在すると予想しています。

Flywayのようなデータベース移行ツールを見てみましょう。これは、Spring Bootも素晴らしい統合性を備えています。これにより、起動時に必要なデータベース構造がアプリケーションによって自動的に作成されます。

+0

実際には、データベースには何千ものリテラルエントリがあります。sshトンネリングを使用すると、問題なくローカルホストから接続できます。どんなEC2インスタンスからでも、私はそれに問題なくアクセスし、すべてを照会することができます! –

+0

何がいいですか?私は完全にここで失われている.... –

+0

あなたが望むものがBoxfuse自動作成されたデータベースの代わりにあなた自身の既存のデータベースを使用することであるなら、最も簡単なのはあなたの既存のBoxfuseアプリケーションをdetroyし、 '-db.type =なし "(https://boxfuse.com/docs/payloads/springboot#databasesを参照) –

関連する問題