• sharding分片键 groovy公式带有非数字字符启动失败


    1、报错:No such property: other for class: Script2

    nested exception is groovy.lang.MissingPropertyException: No such property: other for class: Script2

    2、猜测:groovy公式解析失败

    解析groovy公式$->{[apple, banana]}失败

    3、实施猜测:

    3.1、调试:groovy公式解析过程。

    结果:groovy不可以解析 ${[apple, banana]},可以正常解析带有引号的 非数字  ${['apple', 'banana']}(程序中会删除->再groovy解析),说明不是groovy解析的主要问题,是传输给groovy的公式没有带引号

    3.2、调试:给配置文件的groovy公式带引号

    $->{['apple', 'banana']}

    结果:groovy解析之前,单引号又不见了。

    3.3、调试:groovy解析之前的步骤

    结果:代码读取配置文件到内存后,单引号就不见了。配置文件也不是系统原始的properties文件,而是已经变型了的 yaml文件(名称是rule)存储在电脑的sharding运行目录中

    3.4、调试:properties变型到yaml的过程

    删除之前生成的rule文件,重新生成

    ShardingTableRuleConfigurationYamlSwapper.swapToYamlConfiguration() 
    //到这里  参数中tables还是 $->{['apple', 'banana']}
    

    结果:生成的rule文件中,是$->{['apple', 'banana']}

    应用可以正常启动

    3.4、推测:

    $->{[apple, banana]} 确实会解析失败,

    $->{['apple', 'banana']}可以解析成功。

    应用生成了rule文件, 没有及时更新

    4、总结:

    分片键  groovy公式格式, 

    1)值是数字,可以直接写入 $->{[2022, 2023]}

    2)值是非数字,加单引号,

    =》nacos中写配置:$->{['apple', 'banana']},

    =》项目中写配置加\ ($->{[\'apple\', \'banana\']})

  • 相关阅读:
    python:正则表达式符号
    STC32物联网项目-基本定时器
    .NET 云原生架构师训练营(权限系统 代码实现 ActionAccess)--学习笔记
    jwbasta-thymeleaf 版本
    25 DRF详细学习篇章二|Parsers|Renderers|Serializers
    搭建redis主从和哨兵的一些配置
    JDBC和GUI实现图书管理系统
    1-2二分查找
    中小型企业网络实战topo
    springboot整合redis
  • 原文地址:https://blog.csdn.net/u010286334/article/details/134027376