簡體   English   中英

Spring Boot應用程序無法連接到Google Cloud SQL

[英]Spring Boot application cannot connect to Google Cloud SQL

我無法將Spring Boot應用程序連接到Cloud MySQL。 我在App Engine中部署了應用程序,但未連接到Cloud SQL的網站運行正常。 每當我的應用程序嘗試連接到雲時,都會出現錯誤。 我已經遵循https://cloud.google.com/appengine/docs/flexible/java/using-cloud-sql?hl=it的靈活和標准環境的指南,但它似乎無法正常工作。 我嘗試了遵循寵物診所的教程,但沒有成功。 我將以下依賴項放在文件pom.xml中:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.42</version>
        </dependency>
        <dependency>
            <groupId>com.google.cloud.sql</groupId>
            <artifactId>mysql-socket-factory-connector-j-6</artifactId>
            <version>1.0.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jul-to-slf4j</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

我的application.properties中包含以下項目:

spring.jpa.database=MYSQL
spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://google/DATABASENAME?cloudSqlInstance=PROJECTID:REGION:INSTANCE&socketFactory=com.google.cloud.sql.mysql.SocketFactory
spring.datasource.username=USER
spring.datasource.password=*********

當我嘗試打開嘗試連接數據庫的網站時遇到的錯誤是:發生意外錯誤(類型=內部服務器錯誤,狀態= 500)。 無法打開JPA EntityManager進行交易; 嵌套異常是javax.persistence.PersistenceException:org.hibernate.exception.JDBCConnectionException:無法獲取JDBC連接

我需要做什么才能連接到Google Cloud?

嘗試在同一屬性上使用用戶名和密碼

spring.datasource.url=jdbc:mysql://google/DATABASE?cloudSqlInstance=INTANCE_NAME&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=USERNAME_HERE&password=PASSWORD_HERE

spring.jpa.hibernate.ddl-auto=none
spring.datasource.username=USERNAME_HERE
spring.datasource.password=PASSWORD_HERE
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database=MYSQL
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

然后確保您具有這些依賴項

<dependency>
  <groupId>com.google.api-client</groupId>
  <artifactId>google-api-client</artifactId>
  <version>1.22.0</version>
</dependency>

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

 <dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>

     <dependency>
         <groupId>com.google.cloud.sql</groupId>
         <artifactId>mysql-socket-factory</artifactId>
          <version>1.0.5</version>
     </dependency>

請記住為您的項目啟用Google Cloud SQL API

這在標准環境下對我有效。 我使用接下來的說明使我的項目與標准https://github.com/GoogleCloudPlatform/getting-started-java/tree/master/appengine-standard-java8/springboot-appengine-standard兼容

我還沒有測試過好運嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM