文章目录
视频教程:Day1-12-app端登录-功能实现
1. 错误呈现
以下的错误信息只是表象,真正导致错误的原因有很多个
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 (no profiles are currently active).
报错信息的主要意思是 url 属性没有指定,无法选择一个合适的驱动类
明明配置文件中指定了 url 属性,为什么说没有指定 url 呢,主要有两个原因:
- 访问 url 失败
- 无法读取 Nacos 配置中心上的 url 属性
2. 错误原因一:Nacos配置中心没有url属性
2.1 错误呈现
控制台给出的部分报错信息
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).
2.2 解决办法:在Nacos配置中心添加配置文件
- Data Id:leadnews-user
- Group:DEFAULT_GROUP
参考配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/leadnews_user?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username:
password:
# 设置Mapper接口所对应的XML文件位置,如果你在Mapper接口中有自定义方法,需要进行该配置
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
# 设置别名包扫描路径,通过该属性可以给包中的类注册别名
type-aliases-package: com.heima.model.user.pojos
3. 错误原因二:数据库密码中含有特殊字符
如果你的数据库密码中含有 ! #
等特殊字符,程序在解析时将会出错
3.1 错误呈现
控制台给出的部分报错信息
type-aliases-package: com.heima.model.user.pojos
org.yaml.snakeyaml.scanner.ScannerException: while scanning a tag
in ‘reader’, line 6, column 15:
password: !UpuSZAxG#1&2^cG
^
expected ’ ', but found ‘#’ (35)
in ‘reader’, line 6, column 24:
password: !UpuSZAxG#1&2^cG
^
在 Nacos 配置中心编辑配置文件时可以看到,如果密码中含有 ! #
等特殊字符,字符串的颜色会发生变化
3.2 解决办法一:用双引号将密码包裹起来
可以看到,在用双引号将密码包裹起来之后,字符串的颜色恢复正常了
3.3 解决办法二:修改数据库中对应用户的密码
重新修改数据库中对应用户的密码,新密码中不含 ! #
等特殊字符
4. 错误原因三:Nacos开启了权限认证
4.1 错误呈现
控制台中除了文章开头的错误信息外,还会有以下错误信息
2024-10-20 17:05:32.069 [main] ERROR c.a.c.n.c.NacosPropertySourceBuilder - get data from Nacos error,dataId:leadnews-user
com.alibaba.nacos.api.exception.NacosException: <h1>Whitelabel Error Page</h1>
This application has no explicit mapping for /error, so you are seeing this as a fallback.
我们可以看到,控制台中有 There was an unexpected error (type=Forbidden, status=403).</div><div>unknown user!</div></body></html>
语句,与 403 状态码相关的错误一般都是与权限认证相关,后面的 unknown user
关键字也能印证我们的猜想
4.2 解决办法:在bootstrap.yml文件中添加Nacos的用户名和密码
在 bootstrap.yml 文件中添加 Nacos 的用户名和密码(如果没有额外配置,用户名和密码默认都是小写的 nacos)
5. 其它未知错误的解决办法
如果你遇到的错误与前面提到的三种错误类型都不相同,可以先把配置先直接写在 bootstrap.yml 文件里面,而不是放在 Nacos 上
在控制台查看报错信息,一步步排查,确认配置信息没问题后,再将配置信息放到 Nacos 上