java.time.DateTimeException: Invalid ID for region-based ZoneId, invalid format: ?й???׼ʱ?

学习响应式编程的时候,跟着老师敲代码 再r2dbc的连接上报错 (尚硅谷SpringBoot响应式编程教程,2024最新springboot3入门到实战 41讲 )
响应式编程内容比较新,互联网上没有找到好的解决方案

java.time.DateTimeException: Invalid ID for region-based ZoneId, invalid format: ?й???׼ʱ?

先说结论

如下修改即可
url: r2dbc:mysql://localhost:3306/test01?serverZoneId=Asia/Shanghai

java.time.DateTimeException: Invalid ID for region-based ZoneId, invalid format: ?й???׼ʱ?_第1张图片

@SpringBootTest
public class test {

    @Autowired
    R2dbcEntityTemplate r2dbcEntityTemplate;
    @Autowired
    DatabaseClient databaseClient;

     @Test
    public void getPerson() throws IOException {
        Criteria criteria = Criteria.empty();
        criteria.and("id").is(2)
                .and("name").in("a", "b");
        Query query = Query.query(criteria);
        r2dbcEntityTemplate.select(query, Person.class).subscribe(v -> System.out.println(v));
        System.in.read();
    }


spring:
  r2dbc:
    name: test
    username: root
    password: 123456
    url: r2dbc:mysql://localhost:3306/test01

这是一开始的yaml文件,然后我想着是不是有配置zoneId的地方

就把普通spring项目的url配置抄过来,还是不行

spring:
  r2dbc:
    name: test
    username: root
    password: 123456
    url: r2dbc:mysql://localhost:3306/test01?serverTimezone=Asia/Shanghai

java.time.DateTimeException: Invalid ID for region-based ZoneId, invalid format: ?й???׼ʱ?_第2张图片
这里也没有可以提供声明的

还是照旧报错,本想着去官网查一下的,但是这个r2dbc的后缀可能解析时候改了名字,于是试了一下,成功了

spring:
  r2dbc:
    name: test
    username: root
    password: 123456
    url: r2dbc:mysql://localhost:3306/test01?serverZoneId=Asia/Shanghai

java.time.DateTimeException: Invalid ID for region-based ZoneId, invalid format: ?й???׼ʱ?_第3张图片
虽然这个结果是错误的,再说了

为什么是serverZoneId

上一节课程如下构建的时候就报错了
java.time.DateTimeException: Invalid ID for region-based ZoneId, invalid format: ?й???׼ʱ?_第4张图片
java.time.DateTimeException: Invalid ID for region-based ZoneId, invalid format: ?й???׼ʱ?_第5张图片
这里加上任意一个都不会报错。
然后这个是serverZoneId 。。。。

你可能感兴趣的:(java,开发语言)