Spring-Boot на AWS с Boxfuse - исключение PostgreSQL

Поэтому я использовал boxfuse для развертывания проекта с начальной загрузкой в ​​сервис AWS EC2. все прошло нормально. Однако когда я получаю доступ к своему веб-приложению, само приложение отображает исключение sql:

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

Теперь веб-приложение выполняет следующие действия: оно подключается к базе данных PSQL и запрашивает некоторые данные в одной из таблиц. На моем локальном хосте все отлично работает. Теперь для развертывания веб-приложение должно использовать базу данных AWS RDS Psql. Поэтому я изменил свойства приложения, чтобы перечислять данные доступа для БД RDS вместо локальных, и развернул их в облаке через boxfuse. По файлу application.properties для весны выглядит так:

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

В файле весеннего проекта pom.xml присутствуют соответствующие зависимости

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

Что мне не хватает? Я подумал, что, возможно, мне нужно было вручную подключить SSH к экземпляру BoxfuseEC2 для установки postgresql (может быть, это проблема?), Но я не могу использовать SSH из-за ограниченного права доступа BoxFuse в облачной среде.

Лог-файл 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? Какая-то борьба здесь...

1 ответ

Кажется, проблема в том, что ваша база данных пуста, но ваше приложение ожидает присутствия определенных таблиц.

Взгляните на инструмент миграции баз данных, такой как Flyway, для которого Spring Boot также предлагает отличную интеграцию. Это позволяет вашему приложению автоматически создавать структуры базы данных, необходимые для его запуска.

Другие вопросы по тегам