问题描述
使用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