在 aws 中部署应用程序会引发错误 java.sql.SQLException: 未选择数据库

Enr*_* GF 1 java mysql amazon-web-services spring-boot

开发人员大家好,我在这个 Angular+MySQL+Spring-Boot 应用程序中工作,我正处于将数据库导出到 AWS 的阶段,但出于某种原因,在测试了与 mySQL Workbench 的数据库连接后,当我设置application.properties中的参数出现错误 java.sql.SQLException: No database selected

AWS 抛出的端点以及端口是:

endpoint: bookingrestaurantok.clnhc7kmwszz.us-west-2.rds.amazonaws.com

port: 3306
Run Code Online (Sandbox Code Playgroud)

因此在我的 app.properties 上使用这个元素我只是初始化



spring.datasource.url=jdbc:mysql://bookingrestaurantok.clnhc7kmwszz.us-west-2.rds.amazonaws.com
:3306/restaurant_booking_ok?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

spring.datasource.username=ssssssssssss
spring.datasource.password=sssssssssssssss

spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

logging.level.org.hibernate.SQL=debug
Run Code Online (Sandbox Code Playgroud)

我在这里公开工作台数据库及其端点

在此输入图像描述

在此输入图像描述

但每当我尝试到达应用程序中的任何端点时,都会显示“未选择数据库”的错误 500。你能帮我看看我省略了什么步骤吗

我知道有很多代码,但我还附上了我的 pom,以防万一您发现那里有问题


<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>cubancoder</groupId>
    <artifactId>restaurant-booking</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>restaurant-booking</name>
    <description>Demo project for Spring Boot made on maven  front end angular</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.18</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.modelmapper/modelmapper -->
        <dependency>
            <groupId>org.modelmapper</groupId>
            <artifactId>modelmapper</artifactId>
            <version>2.3.8</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail 
            dependencia para el envio de emails -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
            <version>2.3.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.10.19</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>3.4.6</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.stripe/stripe-java dependencia para el wireling de pagos
        y demas-->
        <dependency>
            <groupId>com.stripe</groupId>
            <artifactId>stripe-java</artifactId>
            <version>19.45.0</version>
        </dependency>



    </dependencies>

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

</project>
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助

Mar*_*arc 5

该错误java.sql.SQLException: No database selected似乎涉及数据库名称。

数据库名称在 property 中设置正确spring.datasource.url,但是对于 Amazon RDS,将该属性指向终端节点就足够了(无需数据库名称)。请尝试以下操作:

spring.datasource.url=jdbc:mysql://bookingrestaurantok.clnhc7kmwszz.us-west-2.rds.amazonaws.com
:3306
Run Code Online (Sandbox Code Playgroud)

编辑:

我能够重现该错误。问题在于,Amazon RDS 默认情况下会创建一个新的数据库实例,但不会创建数据库。要创建数据库,需要设置以下选项:

在此输入图像描述

此外,该错误不会在连接到数据库后出现,而是仅在第一次查询(例如创建新表)之后出现。

将“初始数据库名称”设置为mydb并具有数据库实例 id database-instance-1,则 URL 将为:

spring.datasource.url=jdbc:mysql://database-instance-1.blablabla.rds.amazonaws.com:3306/mydb
Run Code Online (Sandbox Code Playgroud)

我知道您spring.datasource.url看起来是正确的,并且您可以在 Workbench 中看到您的数据库,但我建议您使用 Amazon RDS 仪表板创建一个新的数据库实例并按照上面的说明设置数据库名称。

这不是一个明确的答案,但我希望这个初步答案能让您找出问题的原因。