当前位置: 首页 > 知识库问答 >
问题:

通过谷歌代理将本地spring boot应用程序连接到谷歌云SQL

皇甫展
2023-03-14

我不熟悉Java/spring boot,我正尝试使用谷歌的云SQL作为我项目的数据库。我已经下载了谷歌代理并使用谷歌云SDK进行了身份验证。当我启动代理并使用SSMS连接时,它会连接并正常工作。问题是,当我尝试通过spring boot应用程序连接时,我会出错。我不确定我是否在应用程序属性中遗漏了什么,或者忘记了导入依赖项或类似的东西。任何帮助都将不胜感激!我已经包括了应用程序。属性,生成。gradle和下面的错误。谢谢

应用属性

spring.jpa.hibernate.ddl:mysql://127.0.0.1:1433/{DBNAME}spring.datasource.username={DMUSERNAME}spring.datasource.password={DMPASSWORD}

建筑格拉德尔

   id 'org.springframework.boot' version '2.2.1.RELEASE'
   id 'io.spring.dependency-management' version '1.0.8.RELEASE'
   id 'java'
}

group = '{GROUPNAME}'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
   compileOnly {
       extendsFrom annotationProcessor
   }
}

repositories {
   mavenCentral()
   maven { url 'https://repo.spring.io/milestone' }
}

ext {
   set('springCloudVersion', "Hoxton.RC2")
}

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-web'
   compileOnly 'org.projectlombok:lombok'
   annotationProcessor 'org.projectlombok:lombok'
   testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
   testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
   implementation 'org.springframework.cloud:spring-cloud-gcp-starter'
   implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
   runtime 'mysql:mysql-connector-java'
   implementation 'org.springframework.boot:spring-boot-starter-jdbc'

}

dependencyManagement {
   imports {
       mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
   }
}

test {
   useJUnitPlatform()
}

错误

  Caused by: java.net.ConnectException: Connection refused: no further information
  Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service 
  [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
  Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 
  'hibernate.dialect' not set
   Process 'command 'C:/Program Files/Java/jdk-13.0.1/bin/java.exe'' finished with non-zero exit value 1

共有1个答案

潘凯
2023-03-14

你在使用哪个数据库?你的问题被标记为mysql。

端口1433用于MicrosoftSQL服务器。SSMS用于MicrosoftSQL服务器

您的连接字符串用于MySQL,而不是SQL Server。

更改此项:

spring.datasource.url=jdbc:mysql://127.0.0.1:1433/{DBNAME}

对此:

spring.datasource.url=jdbc:sqlserver://127.0.0.1:1433/{DBNAME}

上述连接字符串使用TCP套接字(而不是Unix套接字),并要求还使用TCP套接字设置云SQL代理。例如,当您在TCP套接字模式下启动云SQL代理时,它应该如下所示:

./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:1433

由于您已通过SSMS成功连接,我假设您已为云SQL访问设置了正确的角色。

 类似资料:
  • 我正在尝试使用云SQL代理将GCE实例连接到云SQL实例(第二代)。当我ssh到GCE实例时 我得到 我已阅读 上的文档https://cloud.google.com/sql/docs/compute-engine-access#gce-连接代理和 https://cloud.google.com/sql/docs/sql-proxy 两个实例都在同一个项目中,并且云SQL API在GCE实例(

  • 根据我在互联网上发现的几个来源,不可能仅通过内部IP将谷歌云功能连接到受限计算引擎实例(例如。https://groups.google.com/forum/#!主题/gce讨论/HEn5P9PJzYQ)。真的还是这样吗?我的设置如下所示: 谷歌云充当API(公共) 我现在通过防火墙规则将计算引擎实例限制为仅内部流量(10.128.0.0/9)。我的应用程序引擎仍然可以连接到计算引擎实例,但我的云

  • 我有一个nodejs应用程序部署在谷歌应用引擎,它触发超文本传输协议云功能,认为简单的超文本传输协议调用(使用axios)从谷歌云Sql获取数据。 将使用该站点的每个人都将能够看到http请求并复制它。 什么是保护我的谷歌云功能的最好方法,只能从谷歌应用程序引擎调用?

  • 我已经用自动完成和谷歌地理编码应用编程接口实现了谷歌地方应用编程接口。问题是结果似乎不正确。 有时自动完成列表中的一些选择结果根本没有地理编码,我得到的只是状态ZERO_RESULTS。 我知道Google Autocomplete也使用Places,而Google Geocode只使用邮政编码,这可能会有一些问题,但我如何限制Autocomplete只提供邮政编码结果呢。

  • 我已经将我的postgres数据库迁移到Google Cloud SQL。 如果不启用SSL,我就可以连接,而不会出现任何问题。 然而,我正在努力让SSL连接工作。 我正在使用pgx池驱动程序。 我已经下载了服务器,客户端和私钥pem文件。 我得到的错误信息是 无法写入启动消息(x509:由未知授权机构签署的证书)

  • 接下来,我生成了自己的OAuth2客户机ID并使用它。这种方法很简单,直到我开始收到来自Google的“匿名使用过期”错误,一段时间后我意识到这是因为密钥没有启用只读日历范围。 我的下一个想法是公开日历,并使用静态API密钥,但日历是从一个名为Peak Pro的预订服务中同步的,该服务用参加活动的客户的姓名、电子邮件和电话号码填充日历描述。我不能公开揭露那些。 接下来,我被吸引到了CalDAV A