springCloud集成nacos启动时报错排查
Posted 究极无敌懒人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springCloud集成nacos启动时报错排查相关的知识,希望对你有一定的参考价值。
今早在集成nacos时启动报如下错:
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 (no profiles are currently active).
Process finished with exit code 1
排查一:检查nacos中配置的database的配置
上面的错误描述明确的说了是datasource的url读不到,那么第一反应是去检查一下是不是配置错误了,nacos中配置的文件检查了datasource的所有属性没有问题
⚠️注意:这里可能会踩坑的是mysql的版本在8以下和8以上driver-class-name是不一样的,8及以上需要在加上cj,还需要在url后面加上时区,这里我检查了一下我的mysql是8.0
排查二:检查bootstrap.yml的配置是否和nacos中内容一致
既然排除了我的数据库配置没问题,那么就需要检查一下我的项目是否能拉到nacos的配置
对比如下,仔细检查后配置没有问题
排查三:检查有无 spring-cloud-starter-bootstrap依赖
在出问题的时候查阅了多方资料,都忽略了这个,因为检查了自己的pom包里面已经有了spring-cloud-starter的依赖,就没有考虑过加bootstrap的依赖,最后实在解决不了我的错,就报着试一下的心态去加了下面的依赖,好了!
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
为什么要加bootstrap的依赖?
我在项目中新加了一个bootstrap.yml,在这之前我只了解到bootstarp.yml的加载优先级比bootstrap.properties更高,但是springboot项目中如果没有spring-cloud-context或者spring-cloud-starter-bootstrap的依赖的话是不会去读取bootstrap.properties的,只会去读application.properties,
spring boot 2.4版本以下加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</dependency>
spring boot 2.4版本以上加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
FAQ调用应用内支付SDK时报错,如何用tag对问题进行排查和分析
华为应用内支付服务(In-App Purchases,IAP)为开发者提供便捷的应用内支付体验和简便的接入流程。开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即可实现应用内支付。在集成过程中,开发者可能会遇到报错的问题,这时我们可以通过查找日志中的tag的方法对问题快速进行排查和定位,以下我们会结合两个实际问题来看如何使用这个方法。
问题一:某开发者调用华为应用内支付SDK,拉起收银台页面,提示“当前支付服务不可用,请稍后再试”。具体参考下图:
问题分析
1.首先我们确认调用的是IAP哪个接口。 通过查看开发者给的日志我们发现调用的是非PMS接口(通过过滤IapClientImpl,我们可以查询调用的接口名)
2.如果是pms,那么调用的收银台接口名为createPurchaseIntent,如果是非pms接口,则调用的接口名为createPurchaseIntentWithPrice。 3.根据对话框提示支付服务不可用,可能是支付服务api开关未打开或者某些地区不支持支付。按照这个思路我们进行定位,在日志中搜索tag: “hms_pay”:
日志显示当前的服务地是法国,但目前应用内支付服务购买非PMS商品只支持中国大陆,所以会提示支付不可用。
解决方法
在应用市场将服务地切换回国内,具体操作如下:应用市场 -> 设置 –> 国家/地区 –> 中国。
问题总结
开发者在调试过程中,如果出现接口不通,或者提示错误时,可以使用以下tag来进行问题定位:
HMSSDK: 可以通过此tag查询到HMS Core SDK框架侧是否异常,如6003,6004,90713XXXX等错误码,当然也会包含IAP SDK侧错误码。如60002,60050等
hms_pay: 如果出现60002,60050等IAP SDK侧错误码,可以通过IAP APK侧来分析可能出现的问题,即可以用该tag进行后续APK侧日志的定位分析。
Network-Request:这个tag其实也属于hms_pay下面的,属于服务测返回的错误码,我们可以根据服务侧返回的错误码以及错误描述,对照服务测文档进行初步排查和定位。如8、9、11、12等错误码。
问题二:某位开发者在调用“isEnvReady“方法时报错,提示“本应用未在当前国家/地区发布”具体参考下图:
问题分析
首先我们在日志上查找Tag 为HMSSDK 和 hms_pay, 发现60007错误码,对比业务错误码,提示商品配置的地区没有分发到该国家。
我们根据错误码提示去AGC网站上查询发布国家和地区,发现目前应用发布地设置在欧洲,但当前登录的帐号在中国大陆,所以会提示该错误。
解决方法
打开AGC网站,在应用上架 –>准备提交页面,将发布国家或地区勾选上中国大陆(如果想在某个国家或地区上架,需要勾选上对应国家或地区),勾选后点击保存,变更后一般在几个小时内会生效。
问题总结
和问题一的定位思路基本一致。根据错误码来进行初步定位。首先要根据客户端错误码判断可能存在的问题,如果我们已经拿到对应的客户端错误码,那么根据官网的错误码含义和解决方案处理即可。
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub
关注我们,第一时间了解 HMS Core 最新技术资讯~
以上是关于springCloud集成nacos启动时报错排查的主要内容,如果未能解决你的问题,请参考以下文章
FAQ调用应用内支付SDK时报错,如何用tag对问题进行排查和分析
FAQ调用应用内支付SDK时报错,如何用tag对问题进行排查和分析
springcloud项目使用debug模式启动的时候,报nacos的异常
SpringCloud - Spring Cloud Alibaba 之 SkyWalking 分布式链路跟踪;跨多服务追踪,集成日志(十五)