Cadence 16.1对接MySQL Aurora 2.07.2报transaction_isolation未知变量错误如何解决
解决方案
报错根因
MySQL 8.0版本才引入transaction_isolation系统变量替代旧版的tx_isolation,你使用的Aurora 2.07.2对应兼容MySQL 5.7版本,仅支持tx_isolation变量,Cadence 16.1默认优先适配MySQL 8.0的变量命名规则,因此触发报错。
你已经配置的MYSQL_TX_ISOLATION_COMPAT=true是官方提供的兼容开关,如果不生效可以按以下顺序排查修改:
- 首先确认环境变量的生效范围:
如果你是前台直接启动Cadence进程,执行echo $MYSQL_TX_ISOLATION_COMPAT确认当前shell的输出为true;如果是通过systemd、Docker等方式部署,需要在对应配置文件中显式声明该环境变量:- Docker/docker-compose部署:在服务的
environment配置段添加MYSQL_TX_ISOLATION_COMPAT: "true" - systemd部署:在service配置文件的
[Service]段添加Environment="MYSQL_TX_ISOLATION_COMPAT=true",修改后执行systemctl daemon-reload再重启Cadence服务
- Docker/docker-compose部署:在服务的
- 修改Cadence持久层配置:找到你使用的环境对应的配置文件(默认是
config/[环境名].yaml),在sql配置的连接串末尾追加参数&tx_isolation='READ-COMMITTED',直接指定使用旧版变量设置隔离级别 - 修改Aurora参数组配置:修改对应Aurora集群的参数组,将全局参数
tx_isolation的值设置为READ-COMMITTED,修改后重启集群实例生效,该配置可以让数据库默认使用Cadence要求的事务隔离级别,不需要应用侧再动态查询修改系统变量 - 若以上配置都不生效,可手动修改Cadence源码中查询/设置事务隔离级别的逻辑,将所有
transaction_isolation变量名替换为tx_isolation后重新编译二进制文件使用
内容的提问来源于stack exchange,提问作者Surge
相关产品推荐
相关产品推荐

