Как исправить ошибки SQL, разрыв соединения и SQLState: 57P01 - PullRequest
0 голосов
/ 09 января 2020

Мое приложение работает на виртуальном сервере и обращается к Postgres БД через Hibernate, который развернут на Heroku. Каждые несколько дней мое приложение останавливается с консольным сообщением:

Jan 09, 2020 3:36:18 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 57P01
Jan 09, 2020 3:36:18 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: FATAL: terminating connection due to administrator command
Jan 09, 2020 3:36:18 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 08006
Jan 09, 2020 3:36:18 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: An I/O error occured while sending to the backend.
Jan 09, 2020 3:36:18 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 08003
Jan 09, 2020 3:36:18 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: This connection has been closed.

Мой hibernate.cfg. xml:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.url">jdbc:postgresql:url</property>
        <property name="hibernate.connection.username">user</property>
        <property name="hibernate.connection.password">pass</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQL94Dialect</property>
        <property name="show_sql">true</property>

        <property name="hibernate.c3p0.idle_test_period">300</property><property name="hibernate.c3p0.timeout">3000</property>
        <property name="hibernate.c3p0.max_size">15</property>
        <property name="hibernate.c3p0.min_size">3</property>
        <property name="hibernate.c3p0.max_statements">0</property>
        <property name="hibernate.c3p0.testConnectionOnCheckout">true</property>
        <property name="hibernate.c3p0.preferredTestQuery">select 1;</property>

    </session-factory>
</hibernate-configuration>

Благодарю за полезные советы.

1 Ответ

0 голосов
/ 09 января 2020

Похоже, либо сервер базы данных перезапущен, либо соединение с базой данных прервано администратором.

Проверьте файл журнала PostgreSQL на перезапуск и спросите своего администратора базы данных.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...