MyCat1.6 RE 子表数据插入 cant find (root) parent sharding node for sql ERRO

问题描述

使用MyCat1.6.7.6 + MySQL 8.0.25 部署 水平分表 ER 分表时,子表插入数据,抛出如下异常:

ERROR 1064 (HY000): can't find (root) parent sharding node for sql:INSERT INTO....

上面抛出异常为 找不到父节点,GitHub有类似的文章GitHub,但是我的插入不是在同一个事物中插入的,但是出现了这个问题,MySQL和MyCat配置如下:

## 订单表
CREATE TABLE orders(
    id INT AUTO_INCREMENT,
    order_type INT,
    customer_id INT,
    amount DECIMAL(10,2),
    PRIMARY KEY(id)
);

## 订单详情
CREATE TABLE orders_detail(
	id INT AUTO_INCREMENT, 
	detail VARCHAR(2000),
	order_id INT, 
	PRIMARY KEY(id)
);

MyCat schema.xml 配置如下

<table name="orders" dataNode="dn1,dn2" rule="mod_rule">
	<childTable name="orders_detail" primaryKey="id" joinKey="order_id" parentKey="id" />
</table>

解决如下

修改 MyCat schema.xml 并重启

## autoIncrement:			开启主键自增策略
## fetchStoreNodeByJdbc:	启用ER表使用JDBC方式获取DataNode
<table name="orders" dataNode="dn1,dn2" rule="mod_rule" autoIncrement="true" fetchStoreNodeByJdbc="true">
	<childTable name="orders_detail" primaryKey="id" joinKey="order_id" parentKey="id" />
</table>

重启MyCat 重新测试数据插入 即可

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值