若依微服务部署中遇到的各种问题

2021-02-25  本文已影响0人  夜色001

1、部署完nacos,启动RuoYiSystemApplication时,报数据信息不存在

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
【分析】从现象看,是没读取到数据库url,即没有读取到配置文件。由于第一使用nacos配置中心,也不知道是我的配置文件命名错误还是其他什么问题。将配置文件直接写入bootstrap.yml中依然报错,排除nacos配置文件命名问题。
备注:Data ID 的完整规则格式如下
{prefix}-{spring.profiles.active}.{file-extension}
prefix是spring.application.name,这里为ruoyi-system,结合active=dev,配置DataID为ruoyi-system-dev.yml没有问题。
后来发现是配置文件中,将数据库配置写到master下了,这是从其他一个多数据源工程中拷贝下来的。删除master后可以正常访问了。

spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
            username: root
            password: password
            # 初始连接数
            initialSize: 5
            # 最小连接池数量
            minIdle: 10
            # 最大连接池数量
            maxActive: 20
            # 配置获取连接等待超时的时间
            maxWait: 60000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            # 配置一个连接在池中最大生存的时间,单位是毫秒
            maxEvictableIdleTimeMillis: 900000

2、启动时报Invalid bound statement (not found)

经查公共配置文件application-dev.yml将mybatis配置成了mybatis-plus

mybatis:
  mapper-locations: classpath*:/mapper/**/*Mapper.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.ruoyi.**.domain
image.png

3、认证中心启动报错

Failed to bind properties under 'spring.datasource.type' to java.lang.Class<javax.sql.DataSource>:
解决方法,添加依赖

<!--阿里数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.4</version>
        </dependency>

4、登录时登录接口dev-api/auth/login报404 NOT_FOUND

启动了RuoYiGatewayApplication、RuoYiAuthApplication、RuoYiSystemApplication三个服务,报404说明网关没有注册。
【解决方案】在网关工程的yml文件中添加

# 权限模块
            - id: ruoyi-auth
              uri: http://localhost:9200/
              predicates:
                - Path=/auth/**
              filters:
                - StripPrefix=1
image.png

5、登录接口dev-api/auth/login报“令牌不能为空”

Gateway有很多的全局过滤器GlobalFilter,若依自定义了一个全局过滤器AuthFilter
其中设置了过滤白名单。

# 不校验白名单
ignore:
  whites:
    - /auth/logout
    - /auth/login
    - /*/v2/api-docs
    - /csrf

写到最外层就可以了,如图。


image.png
上一篇 下一篇

猜你喜欢

热点阅读