/ / Spring-Boot no AWS com Boxfuse - Exceção do PostgreSQL - spring, amazon-web-services, amazon-ec2, aws-rds, boxfuse

Spring-Boot na AWS com Boxfuse - Exceção do PostgreSQL - spring, amazon-web-services, amazon-ec2, aws-rds, boxfuse

Então, usei o boxfuse para implantar um projeto de inicialização por mola no serviço do AWS EC2. tudo correu bem. No entanto, quando eu acesso meu aplicativo da web, o aplicativo em si exibe uma exceção de sql:

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

Agora o webapp faz o seguinte: ele se conecta a um banco de dados psql e consulta algumas coisas em uma das tabelas. No meu localhost, tudo corre perfeitamente bem. Agora, para a implementação, o webapp deve usar um Banco de Dados Psql do AWS RDS. Então mudei as propriedades do aplicativo para listar os dados de acesso para o banco de dados do RDS em vez do local e implantados na nuvem por meio do boxfuse. Por application.properties arquivo para a primavera se parece com isso:

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

No arquivo pom.xml do projeto da primavera, as dependências relevantes estão presentes

<!-- 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>

o que estou perdendo? Eu pensei que talvez eu precisasse fazer o SSH manualmente na instância do BoxfuseEC2 para instalar o postgresql (pode ser este o problema?), Mas eu posso "t SSH devido ao limitado direito de acesso do BoxFuse dentro do ambiente de nuvem.

O arquivo de log boxfuse (últimas linhas) renderiza o seguinte:

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]
[.........]

Alguém tem uma ideia? Parece-me que este é um driver Postgresql + Spring-boot + aws problema de conectividade ... Talvez algo com mybatis? Meio que lutando aqui ....

Respostas:

0 para resposta № 1

O problema parece ser que seu banco de dados está vazio, mas seu aplicativo espera que certas tabelas estejam presentes.

Dê uma olhada em uma ferramenta de migração de banco de dados como Flyway, para o qual o Spring Boot também oferece ótima integração. Isso permite que seu aplicativo crie automaticamente as estruturas de banco de dados necessárias na inicialização.