我正在谷歌云部署一个Spring启动网络应用程序。该应用程序在本地运行良好。我能够启动该应用程序,一切正常。但是当我尝试将其部署到谷歌云时,我得到了以下错误:
java。lang.IllegalArgumentException:必须提供数据库名称
我遵循本教程部署应用程序:https://www.baeldung.com/spring-boot-google-app-engine
有关错误的更多详细信息:
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration': Unsatisfied dependency expressed through constructor parameter 0;
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Unsatisfied dependency expressed through method 'dataSource' parameter 0;
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cloudSqlDataSourceProperties' defined in class path resource [org/springframework/cloud/gcp/autoconfigure/sql/GcpCloudSqlAutoConfiguration$CloudSqlDataSourcePropertiesConfiguration.class]: Unsatisfied dependency expressed through method 'cloudSqlDataSourceProperties' parameter 3;
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultMySqlJdbcInfoProvider' defined in class path resource [org/springframework/cloud/gcp/autoconfigure/sql/GcpCloudSqlAutoConfiguration$MySqlJdbcInfoProviderConfiguration.class]: Bean instantiation via factory method failed;
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.gcp.autoconfigure.sql.CloudSqlJdbcInfoProvider]: Factory method 'defaultMySqlJdbcInfoProvider' threw exception;
Caused by: java.lang.IllegalArgumentException: A database name must be provided.
app.yaml:
runtime: java
env: flex
runtime_config:
jdk: openjdk8
env_variables:
SPRING_PROFILES_ACTIVE: "gcp,mysql"
handlers:
- url: /.*
script: this field is required, but ignored
manual_scaling:
instances: 1
application.properties:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://35.***.***.**:3306/name_db
spring.datasource.username=root
spring.datasource.password=mypass
spring.datasource.initialization-mode=always
server.port = 8080
spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
application-gcp.properties:
spring.cloud.gcp.sql.instance-connection-name=name-project:us-
central1:instance-name
spring.cloud.gcp.sql.database-name=name_db
Spring云引导。属性:
spring.cloud.appId=name-project
波姆。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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.activekids</groupId>
<artifactId>web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>web</name>
<description>Charity spring backend application</description>
<properties>
<java.version>1.8</java.version>
</properties>
<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>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>cloud-gcp</id>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
</dependencies>
<build>
<finalName>${project.name}-gcp</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.3.2</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
我通过移动应用程序gcp中的所有内容解决了这个问题。应用程序的属性。财产。这样地:
(应用程序.属性)
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://35.***.***.**:3306/name_db
spring.datasource.username=root
spring.datasource.password=mypass
spring.datasource.initialization-mode=always
server.port = 8080
spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
#Here added:
spring.cloud.gcp.sql.instance-connection-name=name-project:us-
central1:instance-name
spring.cloud.gcp.sql.database-name=name_db
看起来发生这种情况是因为默认情况下启用了GCPSQL并期望正确的连接。但是如果您不需要它,例如在本地开发期间,只需在application.properties中禁用gsp sql:
spring.cloud.gcp.sql.enabled=false
对我来说有趣的是,在添加了spring cloud gcp starter secretmanager
工件之后,同样的问题出现了。
问题内容: 如果我没有以编程方式设置任何内容,而只是调用并使用hibernate.properties(如下所示),那么一切都将很好。尝试以编程方式提供用户名,密码和连接URL时,我会收到奇怪的异常提示,提示是hbm文件。我想念什么? 按照@Kshitij的建议。进行混合模式。 *现在 *的hibernate.properties 是 编码 例外 我现在得到这个异常,我的hbm文件中的每个条目都有
问题内容: 我写了一些代码来测试我的Hibernate配置,但是遇到了这样的错误消息: 我的文件结构如下: 这不是一个Web应用程序,它只是一个普通的Java项目。hibernate.cfg.xml如下所示: 主要功能中的代码如下: 根据错误消息,错误发生在 我是Hibernate的新用户,并且已经多次检查了我的配置文件。有谁可以帮助您找出问题所在?谢谢! 编辑:Hibernate版本是4.3.5
我编写了一些代码来测试Hibernate的配置,但是我遇到了这样的错误消息: main函数中的代码如下所示: 根据错误消息,错误发生在 我是Hibernate的一个新用户,我已经检查了我的配置文件很多次了。有人能帮我找出问题所在吗?谢了!
是否可以在不安装SQL Server的情况下在客户端计算机中安装应用程序? 在部署应用程序时可以包含数据库吗? 如果在部署时已在系统必备组件中选中SQL Server,是否可以在客户端的计算机上安装?
完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。
我想为我的客户和API建立契约测试。我的API不能在本地运行,所以我希望能够在部署到生产之前,针对已部署的API临时版本运行提供程序测试。 我在网上看到的提供程序测试的大多数示例都使用了localhost。当尝试对我部署的HTTPSendpoint运行提供程序测试时,测试失败,显示。是不支持HTTPS协议,还是我遗漏了什么? 使用pact-provider-verifier cmd line工具工