从 Spring Boot 应用程序连接数据库时出现 org.postgresql.util.PSQLException
Posted
技术标签:
【中文标题】从 Spring Boot 应用程序连接数据库时出现 org.postgresql.util.PSQLException【英文标题】:org.postgresql.util.PSQLException while connecting database from spring boot application 【发布时间】:2019-08-28 15:39:56 【问题描述】:我有 PostgreSQL 数据库表格,我已经创建了数据库和 用户使用以下命令。
create database webreporting;
create user csr with password 'csrtest12!@';
grant all on database webreporting to csr;
GRANT ALL PRIVILEGES ON ALL TABLES
IN SCHEMA public to csr;
GRANT ALL PRIVILEGES ON ALL TABLES IN
SCHEMA public TO csr;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN
SCHEMA public TO csr;
我正在尝试从 springboot 应用程序连接这个数据库。 Spring Boot 应用程序已成功启动,但在从应用程序执行查询时抛出异常,如下所示
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;糟糕的 SQL 语法 [从事实中删除 customer_id=?];嵌套异常是 org.postgresql.util.PSQLException:错误:权限被拒绝 表事实。
Application.properties
文件是:
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/webreporting
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.username=csr
spring.datasource.password=csrtest12!@
我不确定为什么会出现权限被拒绝异常。
【问题讨论】:
您的用户有登录权限吗?试试ALTER ROLE <username> WITH LOGIN;
【参考方案1】:
您可能缺少架构权限。 尝试运行以下命令:
GRANT USAGE ON SCHEMA public TO csr;
【讨论】:
该表是否已经创建或者您希望它在启动时创建? 它的启动之后我想创建表 如果您希望在启动时创建 JPA 实体,您需要在 Spring 配置中设置ddl-auto
属性 - docs。另外,尝试将实体的架构设置为public
。以上是关于从 Spring Boot 应用程序连接数据库时出现 org.postgresql.util.PSQLException的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot Redis 使用 Redis 时出现连接被拒绝异常
在 docker-compose 中将 mongodb 与 spring-boot 应用程序连接时出现此错误
当我将 Spring Boot 应用程序部署到 AWS Elastic Beanstalk 并且无法从本地 Spring Boot 连接到 RDS 时出现 502 错误网关
将 Angular 与 JWT 的 Spring Boot 连接时出现 CORS 错误