《Mycat核心技术》第06章:Mycat问题处理总结

作者:冰河
星球:http://m6z.cn/6aeFbs
博客:https://binghe.gitcode.host
文章汇总:https://binghe.gitcode.host/md/all/all.html
星球项目地址:https://binghe.gitcode.host/md/zsxq/introduce.html

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:介绍Mycat在使用过程中常见的问题,让大家少走弯路,在使用Mycat的过程中尽快规避这些问题。

大家好,我是冰河~~

今天给大家介绍《Mycat核心技术》的第06章:给大家简单介绍下处理真实场景使用Mycat的问题的一点小小的总结,好了,开始今天的内容。

一、报错1

mysql>  INSERT INTO t_order(ID,SN,CREATE_TIME) VALUES(1,'2BJ0001001',NOW());ERROR 1064 (HY000): For input string: "2BJ0001001"
mysql> 

报错是因为分片字段是str字符串,所以需要修改分片规则1中type从0改成1,0是数字型分片,1是字符串分片。

二、报错2

mysql>  INSERT INTO t_order_detail(ID,ORDER_ID,ORD_STATUS,ADDRESS,CREATE_TIME) VALUES (1,1,'1','test data  of ORDER1(ID=1,2BJ0001001) ',NOW());ERROR 1064 (HY000): can't find (root) parent sharding node for sql:INSERT INTO t_order_detail(ID,ORDER_ID,ORD_STATUS,ADDRESS,CREATE_TIME) VALUES (1,1,'1','test data  of ORDER1(ID=1,2BJ0001001) ',NOW())
mysql> 

解决方案1: 此类ER表的插入操作不能作为一个事务进行数据提交,如果父子表在一个事务中进行提交,显然在事务没有提交前子表是无法查询附表的数据的,因此就无法确定分片节点,如果是ER关系的表在插入数据时不能再同一个事务中提交数据,需要分开提交。

解决方案2: 上面的方案2个事务搞不定,所以查看后台Mycat日志

08/13 10:52:09.378  DEBUG [$_NIOREACTOR-3-RW] (ServerQueryHandler.java:56) -ServerConnection [id=1, schema=TESTDB, host=127.0.0.1, user=test,txIsolation=3, autocommit=true, schema=TESTDB]INSERT INTO t_order_detail(ID,ORDER_ID,ORD_STATUS,ADDRESS,CREATE_TIME) VALUES (1,1,'1','test data  of ORDER1(ID=1,2BJ0001001) ',NOW())
08/13 10:52:09.506  DEBUG [$_NIOREACTOR-3-RW] (RouterUtil.java:1188) -find root parent's node sql select t_order.id from t_order where  t_order.id=1
08/13 10:52:09.513  DEBUG [BusinessExecutor5] (EnchachePool.java:76) -ER_SQL2PARENTID  miss cache ,key:TESTDB:select t_order.id from t_order where  t_order.id=1
08/13 10:52:09.513  DEBUG [BusinessExecutor5] (FetchStoreNodeOfChildTableHandler.java:73) -find child node with sql:select t_order.id from t_order where  t_order.id=1
08/13 10:52:09.514  DEBUG [BusinessExecutor5] (FetchStoreNodeOfChildTableHandler.java:81) -execute in datanode dn21
08/13 10:52:09.514  DEBUG [BusinessExecutor5] (PhysicalDBPool.java:452) -select read source hostM2 for dataHost:m1
08/13 10:52:09.535   WARN [$_NIOREACTOR-3-RW] (FetchStoreNodeOfChildTableHandler.java:135) -errorResponse 1146 Table 'db3.t_order' doesn't exist
08/13 10:52:09.535  DEBUG [$_NIOREACTOR-3-RW] (PhysicalDatasource.java:403) -release channel MySQLConnection [id=3, lastTime=1455258729497, user=root, schema=db3, old shema=db3, borrowed=true, fromSlaveDB=false, threadId=290, charset=latin1, txIsolation=0, autocommit=true, attachment=null, respHandler=null, host=192.168.209.137, port=3317, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
08/13 10:52:09.715  DEBUG [BusinessExecutor5] (FetchStoreNodeOfChildTableHandler.java:81) -execute in datanode dn22
08/13 10:52:09.715  DEBUG [BusinessExecutor5] (PhysicalDBPool.java:452) -select read source hostM2 for dataHost:m2
08/13 10:52:09.716   WARN [$_NIOREACTOR-1-RW] (FetchStoreNodeOfChildTableHandler.java:135) -errorResponse 1146 Table 'db3.t_order' doesn't exist

后台执行sql确实找不到

mysql> select t_order.id from t_order where  t_order.id=1;ERROR 1105 (HY000): Table 'db3.t_order' doesn't exist
mysql

原因是2个datanode是互为主从的关系,dn1和dn2是mm结构,然后停止mm结构,2个都是单独的MySQL,然后重建t_order和t_order_detail表,再执行insert操作,问题解决了。

三、报错4

mysql> INSERT INTO t_order_detail(ID,ORDER_ID,ORD_STATUS,ADDRESS,CREATE_TIME) VALUES (1,1,'1','test data  of t_order(ID=1,2BJ0001001) ',NOW());ERROR 1064 (HY000): can't find (root) parent sharding node for sql:INSERT INTO t_order_detail(ID,ORDER_ID,ORD_STATUS,ADDRESS,CREATE_TIME) VALUES (1,1,'1','test data  of t_order(ID=1,2BJ0001001) ',NOW())
mysql> 

原因:表名字大小写的问题导致

解决方案:

打开MySQL的my.cnf配置文件,在[mysqld]节点下加上如下配置:

[mysqld]
lower_case_table_names = 1

问题解决。

四、报错4

Mycat启动后,不能进行任何数据库的操作,报Unknown charsetIndex:224错误。

从错误看是因为字符集问题引起的 ,因为我MYSQL服务器默认使用的是utf8mb4,所以修改Mycat字符集的配置文件。

vim index_to_charset.properties

在配置文件最后加入224=utf8mb4,重启服务即正常。

好了,今天就到这儿吧,我是冰河,我们下期见~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/495540.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW软件开发的未来趋势

LabVIEW软件开发的未来趋势可以从以下几个方面来分析: ​ 1. 与AI和机器学习的深度结合 趋势:LabVIEW正在向集成AI和机器学习方向发展,尤其是在数据处理、预测性维护和自动化控制领域。 原因:AI技术的普及使得实验和工业场景中的…

Ruby+Selenium教程

什么是 Minitest? Minitest 是 Ruby 的测试框架,提供一整套测试工具。它运行速度快,支持 TDD、BDD、模拟和基准测试 以下是使用Ruby、Selenium WebDriver和Minitest 的脚本,用于断言 Restful Booker Platform 的“页面标题”等于…

【Select 语法全解密】.NET开源ORM框架 SqlSugar 系列

系列文章目录 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀 文章目录 系列文章目录前言一、Select 执行位置二、返回一个字段和多个字段三、单表返回DTO四、多表返回DTO4.1 手动DTO4.2 实体自动映射14.…

stm32基础(keil创建、Proteus仿真、点亮LED灯,7段数码管)

一、keil的创建 随后点击新建(Ctrln),接着保存到所自己项目工程文件。.c .h都是这样操作 二、Proteus的简单使用 左上角框框内可以拖动 三、点亮LED灯代码 led.c #include "stm32f10x.h" // Device headervoid led_init(…

细说STM32F407单片机轮询方式读写SPI FLASH W25Q16BV

目录 一、工程配置 1、时钟、DEBUG 2、GPIO 3、SPI2 4、USART6 5、NVIC 二、软件设计 1、FALSH (1)w25flash.h (2) w25flash.c 1)W25Q16基本操作指令 2)计算地址的辅助功能函数 3)器…

sentinel笔记9- 限流规则持久化(上)

之前的在sentinel 控制台配置的规则&#xff0c;重启后就消失了&#xff0c;sentinel 限流保护-笔记-CSDN博客 本篇还是在之前的demo做验证&#xff0c;使用nacos做持久化。 规则集成Nacos 1 引入依赖 <!--nacos-discovery 注册中心依赖--><dependency><gr…

RPA系列-uipath 学习笔记3

用uipath读取excel填写表单 所有素材都搬运自uipath academy 读取数据 现在手头上有这样一份数据 需要按行依次把数据填入到浏览器中的表单中&#xff0c;首先创建一个空的process 在activity中拉入excel process scope,同时在里面点击use_excel_file,选择你要使用的file,并…

强力巨彩租赁屏技术更新,适用多种户外应用场景

现代社会&#xff0c;户外广告和活动展示是商家吸引公众注意力的主要方式之一。在这场视觉盛宴的背后&#xff0c;一款高效、稳定且适应性强的LED显示屏在其中扮演着重要角色。强力巨彩幻云户外HY3.9 H单边斜角底壳租赁屏是一款专为户外创意应用场景量身打造的LED显示屏产品&am…

SpringCloud 系列教程:微服务的未来(二)Mybatis-Plus的条件构造器、自定义SQL、Service接口基本用法

本篇博客将深入探讨 MyBatis-Plus 的三个核心功能&#xff1a;条件构造器、自定义 SQL 和 Service 接口的基本用法。通过对这些功能的学习和掌握&#xff0c;开发者能够更加高效地使用 MyBatis-Plus 进行业务开发。 目录 前言 条件构造器 自定义SQL Service接口基本用法 总结…

vue中proxy代理配置(测试一)

接口地址&#xff1a;http://jsonplaceholder.typicode.com/posts 1、配置一&#xff08;代理没起作用&#xff09; &#xff08;1&#xff09;设置baseURL为http://jsonplaceholder.typicode.com &#xff08;2&#xff09;proxy为 ‘/api’&#xff1a;’ ’ &#xff08;3&a…

Element-ui的使用教程 基于HBuilder X

文章目录 1.Element-ui简介2.使用HBuilderX 创建一个基于Vue3的项目 &#xff08;由于是使用的基于Vue3的Element-ui&#xff09;3.安装element-ui4.在项目里完全引用element-ui5.引用组件6.运行项目 1.Element-ui简介 Element&#xff0c;一套为开发者、设计师和产品经理准备…

C语言从入门到放弃教程

C语言从入门到放弃 1. 介绍1.1 特点1.2 历史与发展1.3 应用领域 2. 安装2.1 编译器安装2.2 编辑器安装 3. 第一个程序1. 包含头文件2. 主函数定义3. 打印语句4. 返回值 4. 基础语法4.1 注释4.1.1 单行注释4.1.2 多行注释 4.2 关键字4.2.1 C语言标准4.2.2 C89/C90关键字&#xf…

Python OCR 文字识别

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…

LeetCode:257. 二叉树的所有路径

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;257. 二叉树的所有路径 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根…

C++----------类的设计

二维点的表示&#xff08;类设计&#xff09; 知识点讲解&#xff1a; 封装&#xff1a;将数据成员&#xff08;x和y坐标&#xff09;设为private&#xff0c;这遵循了面向对象编程中的封装原则&#xff0c;防止外部代码随意修改类内部的数据&#xff0c;保证数据的安全性和完整…

教育行业 UI 设计基础篇:简洁直观的风格打造

在当今数字化时代&#xff0c;教育行业的线上平台如雨后春笋般涌现&#xff0c;而 UI 设计作为用户与教育产品交互的重要桥梁&#xff0c;其重要性不言而喻。对于教育行业而言&#xff0c;简洁直观的 UI 风格能够极大地提升用户体验&#xff0c;帮助学习者更高效地获取知识。 …

分布式协同 - 分布式事务_2PC 3PC解决方案

文章目录 导图Pre2PC&#xff08;Two-Phase Commit&#xff09;协议准备阶段提交阶段情况 1&#xff1a;只要有一个事务参与者反馈未就绪&#xff08;no ready&#xff09;&#xff0c;事务协调者就会回滚事务情况 2&#xff1a;当所有事务参与者均反馈就绪&#xff08;ready&a…

GFPS扩展技术原理(七)-音频切换消息流

音频切换消息流 Seeker和Provider通过消息流来同步音频切换能力&#xff0c;触发连接做切换&#xff0c;获取或设置音频切换偏好&#xff0c;通知连接状态等等。为此专门定义了音频切换消息流Message Group 为0x07&#xff0c;Message codes如下&#xff1a; MAC of Audio s…

实现 QTreeWidget 中子节点勾选状态的递归更新功能只影响跟节点的状态父节点状态不受影响

在 Qt 开发中&#xff0c;QTreeWidget 提供了树形结构的显示和交互功能。为了实现某个子节点勾选或取消勾选时&#xff0c;只影响当前节点及其子节点的状态&#xff0c;同时递归更新父节点的状态以正确显示 Qt::PartiallyChecked 或 Qt::Checked&#xff0c;我们可以借助 Qt 的…

计算机图形学知识点汇总

一、计算机图形学定义与内容 1.图形 图形分为“图”和“形”两部分。 其中&#xff0c;“形”指形体或形状&#xff0c;存在于客观世界和虚拟世界&#xff0c;它的本质是“表示”&#xff1b;而图则是包含几何信息与属性信息的点、线等基本图元构成的画面&#xff0c;用于表达…