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

导读:本篇文章讲解 MyCat1.6 RE 子表数据插入 cant find (root) parent sharding node for sql ERRO,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

问题描述

使用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 重新测试数据插入 即可

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/72489.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!