我是 Java/spring boot 的新手,我正在尝试使用谷歌的云 SQL 作为我项目的数据库。我已经下载了谷歌代理并使用谷歌云 SDK 进行了身份验证。当我启动代理并使用 SSMS 连接时,它会连接并且工作正常。问题是当我尝试通过 Spring Boot 应用程序进行连接时,出现错误。我不确定我是否在应用程序属性中遗漏了某些东西,或者忘记导入依赖项或类似的东西。任何帮助,将不胜感激!我在下面包含了 applications.properties、build.gradle 和错误。谢谢!
应用程序属性
spring.jpa.hibernate.ddl-auto=create spring.datasource.url=jdbc:mysql://127.0.0.1:1433/{DBNAME} spring.datasource.username={DMUSERNAME} spring.datasource.password={DMPASSWORD}
构建.gradle
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
您使用的是哪个数据库?您的问题已标记为mysql
。
端口 1433 用于 Microsoft SQL Server。SSMS 适用于 Microsoft SQL Server
您的连接字符串是用于 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 套接字设置 Cloud SQL 代理。例如,当您以 TCP 套接字模式启动 Cloud SQL 代理时,它应如下所示:
./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:1433
由于您已通过 SSMS 成功连接,因此我假设您已为 Cloud SQL 访问设置了正确的角色。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句