无法使用 postgres DB 确定数据库类型 NONE 的嵌入式数据库驱动程序类

Posted

技术标签:

【中文标题】无法使用 postgres DB 确定数据库类型 NONE 的嵌入式数据库驱动程序类【英文标题】:Cannot determine embedded database driver class for database type NONE using a postgres DB 【发布时间】:2018-02-12 09:44:24 【问题描述】:

在 Eclipse 中运行 Spring Boot 应用程序时出现错误“无法确定数据库类型 NONE 的嵌入式数据库驱动程序类”。 我在网上搜索过,但找不到任何有用的东西。请看下面的代码:-

Application.properties

server.port=9093
spring.datasource.url=jdbc:postgresql://localhost:5432/DB
spring.datasource.username=postgres
spring.datasource.password=Sunny@310591
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
logging.level.org.springframework.web=INFO
logging.level.com.ge.punemmf.qualityputaway=DEBUG
logging.level.org.hibernate=ERROR
logging.file=logs/spring-boot-logging.log
spring.database.driverClassName=org.postgresql.Driver
endpoints.sensitive=false

Application.java

@SpringBootApplication
@EntityScan(basePackageClasses =  CenterOfExcellence.class, WorkOrder.class )
public class WarehouseVisibilityApplication 

    public static void main(String[] args) 
        SpringApplication.run(WarehouseVisibilityApplication.class, args);
    

CenterOfExcellence.java

@Entity
@Table(name = "CENTEROFEXCELLENCE")
public class CenterOfExcellence 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    @OneToMany
    @JoinTable(name = "CENTEROFEXCELLENCE_WORKORDER", 
    joinColumns = @JoinColumn(name = "center_of_excellence_id"), inverseJoinColumns = @JoinColumn(name = "workorder_id"))
    private Set<WorkOrder> workorders;


WorkOrder.java

@Entity
@Table(name = "WORKORDER")
public class WorkOrder 
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;
    private String workOrder;

POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.warehousevisibility</groupId>
    <artifactId>WarehouseVisibility</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>WarehouseVisibility</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

错误:-

说明:

无法确定数据库类型 NONE 的嵌入式数据库驱动程序类

行动:

如果您想要一个嵌入式数据库,请在类路径中放置一个受支持的数据库。如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(当前没有配置文件处于活动状态)。

【问题讨论】:

@g00glen00b :是的,我已添加,请立即检查 pom.xml。 “你的数据库在运行吗”听起来像是一个恶作剧的开始...... 是的数据库正在运行 我用你的配置尝试了一个新项目,我可以运行应用程序。确保您的 application.properties 位于正确的位置。 Postgres 驱动程序的 jar 可能已损坏。尝试从 Maven 的缓存中清除它并再次运行您的应用程序。 【参考方案1】:

当 spring 看不到 application.properties 时出现此消息(并且没有嵌入式数据库集) 验证:确保使用的端口是 9093 而不是默认的 8080。

【讨论】:

application.properties 在我的资源文件夹中。请检查一下。 你能不能试试 'spring.datasource.driverClassName' 而不是 'spring.database.driverClassName'。 那么,看一下我github中的一个例子:github.com/montassarelbehi/gpr-back

以上是关于无法使用 postgres DB 确定数据库类型 NONE 的嵌入式数据库驱动程序类的主要内容,如果未能解决你的问题,请参考以下文章

Docker Compose 无法从数据库 (jdbc:postgresql://db:5432/postgres) 为用户“postgres”获取连接:连接尝试失败

无法从数据网格连接到 postgres db

无法使用 JDBC kafka-sink-connector 将 kafka 主题数据写入 postgres DB

GCP SQL Postgres 权限问题:无法使用生成的 symfony db 使用 postgres 用户运行查询

java 8 到 java 11 迁移后使用 postgres db 和 spring boot 保存 JpaSystemException 的 jsonb 类型数据

Spring Batch 无法通过 DB (postgres) 获取作业锁