After upgrading from `2023.0.1.2` to `2023.0.1.3`, my project fails to start
Opened this issue · 11 comments
Framework versions
- SpringBoot Version:
3.3.5
- SpringCloud Version:
2023.0.3
- SpringCloudAlibaba :
2023.0.1.2
->2023.0.1.3
Configuration in bootstrap.yml
spring:
application:
name: xxxxxx
cloud:
nacos:
config:
file-extension: yml
server-addr: x.x.x.x:xxxx
username: xxxx
password: xxxx
Configuration of DataSource in Nacos:
spring:
datasource:
url: jdbc:mysql://xxxxx/xxxx
username: xxxx
password: xxxx
Error Message
- After upgrading SpringCloudAlibaba from
2023.0.1.2
to2023.0.1.3
, my project fails to start with the following errors:
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (the profiles dev are currently active).
- If downgraded SpringCloudAlibaba to
2023.0.1.2
, it immediately works ok.
感觉不像是 srping cloud alibaba 的问题,sca 没有和数据库相关的代码部分。
可以看看最新的 spring boot 版本和用的 orm 框架是不是兼容。或者能提供一个复现的最简例子,我们本地复现看看
感觉不像是 srping cloud alibaba 的问题,sca 没有和数据库相关的代码部分。
可以看看最新的 spring boot 版本和用的 orm 框架是不是兼容。或者能提供一个复现的最简例子,我们本地复现看看
这个是例子:
springboot-alibaba.zip
把 application.yml 改为 bootstrap.yml
错误信息显示的是数据库问题,是因为服务启动时数据库相关内容加载的比较早。本质是因为无法读取到Nacos 的配置,读不到 Nacos 的配置所以首先抛出数据库连接问题。
这个问题与 #3877 #3874 和 #3876 是同一个问题。2023.0.1.2 运行正常,升级到 2023.0.1.3 就会出问题。
2023.0.1.3 目测最大的变化是提取出了一个配置模块。bootstrap 和 import 两种配置读取方式一直都是同时支持的,逻辑上不应该重构了代码就支持某一种了。个人猜测是 #3878 所致。
我也碰到同样问题,在创建数据库DataSource时,读取不到nacos的数据库配置信息。
错误信息显示的是数据库问题,是因为服务启动时数据库相关内容加载的比较早。本质是因为无法读取到Nacos 的配置,读不到 Nacos 的配置所以首先抛出数据库连接问题。
这个问题与 #3877 #3874 和 #3876 是同一个问题。2023.0.1.2 运行正常,升级到 2023.0.1.3 就会出问题。
2023.0.1.3 目测最大的变化是提取出了一个配置模块。bootstrap 和 import 两种配置读取方式一直都是同时支持的,逻辑上不应该重构了代码就支持某一种了。个人猜测是 #3878 所致。我也碰到同样问题,在创建数据库DataSource时,读取不到nacos的数据库配置信息。
可以临时改成 Import 方式,就可以用了。见:#3882
在 Maven 仓库发现有 2023.0.3.2
版本, 升级到 2023.0.3.2
后,该问题依然存在。
可以临时改成 Import 方式,就可以用了。见:#3882
把 bootstrap.yml
改成:
spring:
application:
name: xxxxxx
cloud:
nacos:
config:
file-extension: yml
server-addr: x.x.x.x:xxxx
username: xxxx
password: xxxx
config:
import:
- nacos:${spring.application.name}?refreshEnabled=true
确实就正常了。
以后版本, 这个配置项 spring.config.import
都是必须的了吗?
不添加这个配置项就不行了是吗?
可以临时改成 Import 方式,就可以用了。见:#3882
把
bootstrap.yml
改成:spring: application: name: xxxxxx cloud: nacos: config: file-extension: yml server-addr: x.x.x.x:xxxx username: xxxx password: xxxx config: import: - nacos:${spring.application.name}?refreshEnabled=true确实就正常了。
以后版本, 这个配置项
spring.config.import
都是必须的了吗? 不添加这个配置项就不行了是吗?
我试了 2023.0.3.2 版本,问题应该解决了,至少在我本地不使用 import 方式也可以运行了。但是,还有其它问题,见 #3919
有说法是这样的,似乎以后就只支持 import 方式,有 SCA 的 Comitter 是这样说的。但是感觉现在还不明确,官网文档相关内容也还是各种方式都支持。
文档没有来得及更新,后面官网会改成 import 引入得方式
可以临时改成 Import 方式,就可以用了。见:#3882
把
bootstrap.yml
改成:spring: application: name: xxxxxx cloud: nacos: config: file-extension: yml server-addr: x.x.x.x:xxxx username: xxxx password: xxxx config: import: - nacos:${spring.application.name}?refreshEnabled=true确实就正常了。
以后版本, 这个配置项
spring.config.import
都是必须的了吗? 不添加这个配置项就不行了是吗?
是的,这个是现在社区主推的一个配置方式,之前的老版本配置不建议用了