Axon Framework启动报错:tokenentry表不存在导致微服务启动失败
问题定位
报错提示的token_entry表是Axon Framework用于持久化跟踪事件处理器消费进度的核心表,出现该错误是因为Axon读取到的配置要求将跟踪令牌存储在你指定的banking2MySQL库中,但该库中未创建对应表,导致服务启动时无法写入令牌数据。
解决方案
方案1:开启自动DDL生成(仅推荐开发环境使用)
如果你使用Spring Boot整合Axon,直接在项目配置文件中添加对应配置即可让Axon启动时自动创建缺失的表:# 使用JPA存储时添加 axon.jpa.generate-ddl=true # 使用JDBC存储时添加 axon.jdbc.generate-ddl=true该配置生产环境不建议开启,避免自动操作带来的数据风险。
方案2:手动执行建表SQL(推荐生产环境使用)
你可以手动在banking2库中执行对应版本的Axon建表语句,MySQL环境下通用的token_entry建表语句参考:CREATE TABLE IF NOT EXISTS token_entry ( processor_name VARCHAR(255) NOT NULL, segment INTEGER NOT NULL, owner VARCHAR(255), timestamp VARCHAR(255) NOT NULL, token BLOB, token_type VARCHAR(255), PRIMARY KEY (processor_name, segment) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;执行前可对照你使用的Axon版本官方提供的建表语句核对字段,避免版本不兼容问题。
方案3:排查令牌存储配置
如果你原本配置了使用Axon Server存储令牌,无需本地存储令牌,可以检查项目配置是否被意外覆盖,确认是否有配置强制指定了令牌使用本地JDBC/JPA存储,调整回Axon Server存储即可不需要本地创建token_entry表。
内容的提问来源于stack exchange,提问作者Nabil CHERQAOUI
相关产品推荐
相关产品推荐

