首页 > 解决方案 > Hibernate 阻止我登录只读 Postgresql 数据库

问题描述

我在 AWS 上复制了我的一个数据库。这是一个 RDS 实例。之后,我所做的只是将我的应用程序中的 pom 文件中的端点更改为指向新的只读副本。但是,当我通过 intelliJ 在本地运行代码并进入登录页面时,登录会产生以下错误:

Hibernate: select authorizat0_.id as id1_0_2_, authorizat0_.expirationDate as expirati2_0_2_, authorizat0_.timeCreated as timeCrea3_0_2_, authorizat0_.token as token4_0_2_, authorizat0_.user_id as user_id5_0_2_, user1_.id as id1_6_0_, user1_.timeCreated as timeCrea2_6_0_, user1_.uuid as uuid3_6_0_, user1_.version as version4_6_0_, user1_.company_id as company_5_6_0_, user1_.emailAddress as emailAdd6_6_0_, user1_.firstName as firstNam7_6_0_, user1_.hashedPassword as hashedPa8_6_0_, user1_.isVerified as isVerifi9_6_0_, user1_.lastName as lastNam10_6_0_, user1_.phoneNumber as phoneNu11_6_0_, user1_.role as role12_6_0_, user1_.signatureImage as signatu13_6_0_, company2_.id as id1_1_1_, company2_.timeCreated as timeCrea2_1_1_, company2_.uuid as uuid3_1_1_, company2_.version as version4_1_1_, company2_.accountId as accountI5_1_1_, company2_.additional_setting as addition6_1_1_, company2_.beginningDate as beginnin7_1_1_, company2_.city as city8_1_1_, company2_.country as country9_1_1_, company2_.expirationDate as expirat12_1_1_, company2_.logo as logo25_1_1_, company2_.logoType as logoTyp26_1_1_, company2_.name as name27_1_1_, company2_.need_disclaimer as need_di28_1_1_, company2_.state as state30_1_1_, company2_.statement as stateme31_1_1_, company2_.streetAddress1 as streetA32_1_1_, company2_.streetAddress2 as streetA33_1_1_,  company2_.use_customer_supplier_id as use_cus35_1_1_,  company2_.user_id as user_id37_1_1_, company2_.zipcode as zipcode38_1_1_ from authorization_token authorizat0_ left outer join "user" user1_ on authorizat0_.user_id=user1_.id left outer join company company2_ on user1_.company_id=company2_.id where authorizat0_.user_id=?
    Hibernate: select nextval ('hibernate_sequence')
    09:44:19.651 [qtp951562287-24] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ERROR: cannot execute nextval() in a read-only transaction

有谁知道如何解决这一问题 ?

使用只读数据库时是否需要对休眠进行不同的配置?只需将我的端点更改为一个,此应用程序即可与任何写入数据库一起正常工作

标签: javapostgresqlhibernate

解决方案


看起来应用程序正在尝试通过 INSERT 语句写入一些数据,它试图获取序列值并失败,因为数据库是只读的。您必须调整应用程序,使其不在此数据库上执行任何写入操作。


推荐阅读