Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Spring Boot应用程序连接到Google云中的MySQL数据库_Mysql_Maven_Spring Boot_Google Cloud Sql_App Engine Flexible - Fatal编程技术网

将Spring Boot应用程序连接到Google云中的MySQL数据库

将Spring Boot应用程序连接到Google云中的MySQL数据库,mysql,maven,spring-boot,google-cloud-sql,app-engine-flexible,Mysql,Maven,Spring Boot,Google Cloud Sql,App Engine Flexible,我正在尝试将一个使用jdbc和MySQL数据库的SpringBootMaven应用程序部署到一个具有第二代db的灵活的Google应用程序引擎项目中。 当应用程序和数据库都在本地运行时(spring引导:run&XAMPP),所有功能都符合预期。 当应用程序在本地运行并且db在Google CloudSQL上运行时,所有功能仍然正常。 但当这两个实体都部署到谷歌云时,我的应用程序在尝试访问数据库时会出现“连接失败”。 应用程序部署良好,并提供硬编码响应。应用程序和数据库位于同一个Google C

我正在尝试将一个使用jdbc和MySQL数据库的SpringBootMaven应用程序部署到一个具有第二代db的灵活的Google应用程序引擎项目中。 当应用程序和数据库都在本地运行时(spring引导:run&XAMPP),所有功能都符合预期。 当应用程序在本地运行并且db在Google CloudSQL上运行时,所有功能仍然正常。 但当这两个实体都部署到谷歌云时,我的应用程序在尝试访问数据库时会出现“连接失败”。 应用程序部署良好,并提供硬编码响应。应用程序和数据库位于同一个Google Cloud项目中,CloudSQL bucket设置为允许所有项目文件访问。 然而,我也尝试过将它们分成不同的项目,并在db的列表中授权应用程序的项目。没有变化。 它的行为与我试图从未经授权的IP地址访问db时完全相同

我按照指示向app.yaml文件添加元素

runtime: java
env: flex

runtime_config:  # Optional
jdk: openjdk8

handlers:
   - url: /.*
   script: this field is required, but ignored

# I've tried implementing env_variables and beta setting
# both separately and in tandem.
env_variables:
   MYSQL_DSN: mysql:unix_socket=/cloudsql/jdbc:mysql://12.345.67.890;dbname=exam
   MYSQL_USER: username
   MYSQL_PASSWORD: password

beta_settings:
   cloud_sql_instances: mytestproject1-123456:europe-west1:mydb  

manual_scaling:
   instances: 1
我按照指示向application.properties文件添加元素

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://12.345.67.890/exam
spring.datasource.username=username
spring.datasource.password=password

# I've also tried this url formulation:
#spring.datasource.url=jdbc:mysql://google/exam?cloudSqlInstance=mytestproject1-123456:europe-west1:mydb&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=username&password=password&useSSL=false
我按照指示向POM.xml文件添加元素

http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.my
我的项目
0.0.1-快照
罐子
我的项目
SpringBoot的演示项目
org.springframework.boot
spring启动程序父级
2.0.1.1发布
UTF-8
UTF-8
1.8
1.0.0.M3
Finchley.M9
1.3.2
1.8
1.8
mytestproject1-123456:europe-west1:mydb
用户名
密码
考试
jdbc:mysql://google/${database}?cloudSqlInstance=${INSTANCE\u CONNECTION\u NAME}&;socketFactory=com.google.cloud.sql.mysql.socketFactory&;user=${user}&;password=${password}&;usesl=false
org.springframework.boot
弹簧靴启动器jdbc
org.springframework.boot
SpringBootStarterWeb
org.springframework.cloud
春云gcp启动器
mysql
mysql连接器java
运行时
com.google.cloud.sql
mysql-socket-factory-connector-j-6
1.0.8
org.springframework.boot
弹簧起动试验
测试
org.springframework.cloud
spring云依赖关系
${spring cloud.version}
聚甲醛
进口
org.springframework.cloud
spring云gcp依赖项
${spring cloud gcp.version}
聚甲醛
进口
org.springframework.boot
springbootmaven插件
com.google.appengine
appengine maven插件
1.9.63
com.google.cloud.tools
appengine maven插件
${appengine.maven.plugin}
春季里程碑
春季里程碑
https://repo.spring.io/milestone
假的

再一次,在本地部署中,这一切都可以正常工作,而云MySQL存储桶可以将其数据提供给本地部署的应用程序。
我的问题是,在部署到Google App Engine时,如何让Spring Boot应用程序连接到云MySQL实例?

您可能有兴趣尝试新的应用程序。
它会自动为您选择JDBC URL。您应该能够以比当前更少的配置运行应用程序。

application.proprieties文件在哪个目录下?查看此源[]和类似案例[]它应该在src/main/resources上。我的文件结构已经如您所建议的那样,但是您的链接已经向我展示了一些新的公式供我试用。谢谢,如果有人修复了它,我会告诉您的。谢谢您的建议。以下是与spring starter库链接的文档:
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.my</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

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

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
    <relativePath/>
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <spring-cloud-gcp.version>1.0.0.M3</spring-cloud-gcp.version>
    <spring-cloud.version>Finchley.M9</spring-cloud.version>
    <appengine.maven.plugin>1.3.2</appengine.maven.plugin>


    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <INSTANCE_CONNECTION_NAME>mytestproject1-123456:europe-west1:mydb</INSTANCE_CONNECTION_NAME>
    <user>username</user>
    <password>password</password>
    <database>exam</database>
    <sqlURL>jdbc:mysql://google/${database}?cloudSqlInstance=${INSTANCE_CONNECTION_NAME}&amp;socketFactory=com.google.cloud.sql.mysql.SocketFactory&amp;user=${user}&amp;password=${password}&amp;useSSL=false</sqlURL>

</properties>


<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-gcp-starter</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-connector-j-6</artifactId>
        <version>1.0.8</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-dependencies</artifactId>
            <version>${spring-cloud-gcp.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>1.9.63</version>
        </plugin>
        <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>${appengine.maven.plugin}</version>
        </plugin>
    </plugins>
</build>

<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>