01:31:05.738 INFO --- [ main] io.seata.server.Server : The server is running in container. 01:31:05.758 INFO --- [ main] io.seata.config.FileConfiguration : The file name of the operation is registry 01:31:05.761 INFO --- [ main] io.seata.config.FileConfiguration : The configuration file used is /seata-server/resources/registry.conf 01:31:05.884 INFO --- [ main] io.seata.config.FileConfiguration : The file name of the operation is file.conf 01:31:05.885 INFO --- [ main] io.seata.config.FileConfiguration : The configuration file used is file.conf 01:31:07.024 INFO --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited Exception in thread "main" io.seata.common.exception.DataAccessException: HOUR_OF_DAY: 2 -> 3 at io.seata.server.storage.db.store.LogStoreDataBaseDAO.queryGlobalTransactionDO(LogStoreDataBaseDAO.java:182) at io.seata.server.storage.db.store.DataBaseTransactionStoreManager.readSession(DataBaseTransactionStoreManager.java:182) at io.seata.server.storage.db.store.DataBaseTransactionStoreManager.readSession(DataBaseTransactionStoreManager.java:212) at io.seata.server.storage.db.session.DataBaseSessionManager.findGlobalSessions(DataBaseSessionManager.java:188) at io.seata.server.storage.db.session.DataBaseSessionManager.allSessions(DataBaseSessionManager.java:177) at io.seata.server.session.SessionHolder.reload(SessionHolder.java:136) at io.seata.server.session.SessionHolder.init(SessionHolder.java:123) at io.seata.server.Server.main(Server.java:84) Caused by: java.sql.SQLException: HOUR_OF_DAY: 2 -> 3 seata起不来了,HOUR_OF_DAY: 2 -> 3,这个问题有遇到过的朋友吗?
日志信息来看,Seata 服务器在启动时遇到了 DataAccessException,这个异常是在尝试查询全局事务时抛出的。异常信息 "HOUR_OF_DAY: 2 -> 3" 指的是小时字段的值从 2 变成了 3,这通常与时间相关的操作有关,尤其是涉及时区转换或夏令时调整时。
可能原因是服务器和数据库使用了不同的时区设置,或者数据库驱动在处理时间时遇到了时区转换问题。
这是一个美国夏令时引起的问题,美国夏令时一般在3月第二个周日凌晨2点(当地时间)开始,将时钟调到3点,拨快1小时,而在11月第一个周日凌晨2点(当地时间)夏令时结束,要将时钟调到1点,拨慢1小时,所以 CST:
没有 2020-03-08 02:00:00~2020-03-08 03:00:00 区间的时间
有两个 2020-11-01 01:00:00~2020-11-01 02:00:00 区间的时间,
所以你这个bug的出现是因为在CST中出现了不存在这个时区的时间,解决这个问题可以在数据库连接或者数据库设置中指定时区
数据库查询中的 HOUR_OF_DAY: 2 -> 3 导致的。这可能是一个 SQL 查询中的语法错误,或者是数据库不支持 HOUR_OF_DAY 列的转换。
建议您检查一下相关 SQL 查询语句,确保语法正确,同时检查数据库是否支持 HOUR_OF_DAY 列的转换。
你提到的“HOUR_OF_DAY: 2 -> 3”似乎是在描述一个时间格式的问题。在Java的java.time.format.DateTimeFormatter中,HOUR_OF_DAY是一个常量,用于表示24小时制的小时。如果你尝试将这个常量从2更改为3,这可能是一个错误,因为小时的范围是0到23。
如果“seata起不来了”是因为这个错误导致的,你可能需要检查你的代码或配置,确保小时值的范围是正确的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。