2016-10-29 2 views
1

Итак, я использовал boxfuse для развертывания проекта Spring Boot для службы AWS EC2. все пошло нормально. Тем не менее, когда я получить доступ к своему веб-приложение, само приложение отображает исключение SQL:Spring-Boot на AWS с Boxfuse - PostgreSQL Exception

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

Теперь веб-приложение делает следующее: он подключается к базе данных Psql и запрашивает некоторый материал на одном из столов. На моем локальном хосте все работает отлично. Теперь для развертывания webapp должен использовать базу данных AWS RDS Psql. Поэтому я изменил свойства приложения, чтобы перечислить данные доступа для RDS DB вместо локального и развернуто в облаке через 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? Kinda изо всех сил здесь.

ответ

0

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

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

+0

Как правило, база данных заполняется буквально тысячами записей - с помощью ssh-туннелирования я могу подключиться с localhost к ней без каких-либо проблем. Из любого экземпляра EC2 я могу получить к нему доступ без каких-либо проблем и запросить все! –

+0

Любая идея? Я потерял здесь полностью ... –

+0

Если вы хотите использовать свою собственную существующую базу данных вместо автоматически созданной Boxfuse, проще всего отменить существующее приложение Boxfuse и воссоздать его с помощью '-db.type = none' (см. https://boxfuse.com/docs/payloads/springboot#databases) –

Смежные вопросы