Spring,application.properties,用于创建ElephantSQL表

时间:2017-05-14 10:29:07

标签: spring postgresql hibernate

我尝试进行部署(我使用pivotal.io) 在部署之前,我尝试创建我的数据库表。 在pivotal.io上,我创建了测试数据库(ElephantSQL)。这个新的DB有:
共享高性能集群
20 MB数据
4个并发连接

我使用Spring,这在应用程序属性中描述了我的数据库。如果我在我的localhost上创建数据库,这是有效的。

spring.datasource.url=jdbc:postgresql://stampy.db.elephantsql.com:5432/iyraxwqa
spring.datasource.username=iyraxwqa
spring.datasource.password=*************************
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=create

spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.jpa.show-sql=false`

当我运行我的应用程序时,我看到了这个错误:

2017-05-14 12:53:38.810 ERROR 4880 --- [           main] o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to create initial connections of pool.

org.postgresql.util.PSQLException: FATAL: too many connections for role "iyraxwqa"
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2455) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
    at org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2586) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
    at org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:113) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:222) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:215) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
    at org.postgresql.Driver.makeConnection(Driver.java:404) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
    at org.postgresql.Driver.connect(Driver.java:272) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310) ~[tomcat-jdbc-8.5.6.jar:na]
    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203) ~[tomcat-jdbc-8.5.6.jar:na]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:718) [tomcat-jdbc-8.5.6.jar:na]

我包含hibernate h3p0并添加以下代码:

spring.jpa.properties.hibernate.c3p0.min_size = 1
spring.jpa.properties.hibernate.c3p0.max_size = 2
spring.jpa.properties.hibernate.c3p0.timeout = 300

但我看到了同样的错误 如果我尝试手动创建所有工作,但我有很多表,半年前我用spring和hibernate创建表
我的一张桌子:

@Entity
@Table(name = "INTERIOR", schema = "public")
public class InteriorModel extends AllFinishProductModel {

@Column(name = "PHOTO")
private String photo;
@Column(name = "PHOTO01")
private String photo01;
@Column(name = "PHOTO02")
private String photo02;
@Id
@Column(name = "ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column
private String name;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "COLOR")
private String color;
@Column(name = "QUANTITY")
private Double quantity;
@Column(name = "PRICE")
private BigDecimal price;
// getters and setters....

有人知道,我的错误在哪里?

2 个答案:

答案 0 :(得分:1)

我有同样的问题,我认为你正在使用免费计划(Tiny Turtle)。我认为问题是PosgreSql(elephantsql服务器)支持的最大连接数,要知道你可以在ElephantSql浏览器中执行跟随sql脚本的最大限制连接:

从pg_roles中选择*,其中rolname =&#39; iyraxwqa&#39;

它在postgresql中显示你的角色配置,你可以看到列&#39; rolconnlimit&#39;知道支持的最大连接数

答案 1 :(得分:0)

我不明白为什么,但是当我删除c3p0并开始使用tomcat时,一切正常。这段代码正在运行:

spring.datasource.tomcat.max-wait=1000
spring.datasource.tomcat.max-active=3
spring.datasource.tomcat.test-on-borrow=true