转载请注明出处:http://blog.csdn.net/l1028386804/article/details/77140801

1、报错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、报错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关系的表在插入数据时不能再同一个事务中提交数据,需要分开提交。

3、报错3

解决方案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、报错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

问题解决。

Mycat之——错误处理总结相关推荐

  1. Asp.net Core 使用MyCat分布式数据库,实现读写分离

    简介 MyCat2.0版本很快就发布了,关于MyCat的动态和一些问题,大家可以加一下MyCat的官方QQ群:106088787.我们今天主要介绍一下,在我们的Asp.net Core中如何使用Myc ...

  2. mycat的主从配置

    主从复制原理: 主机所进行的写操作将其写入binary log的日志里面,从机不能直接读取主机上的信息而是直接读取binarylog日志里面的内容,但不是直接执行该日志里面的内容,而是将其写入rela ...

  3. 类的构造函数与析构函数

    当派生类中含有对象成员时,构造函数调用顺序:基类构造函数→对象成员的构造函数→子类构造函数,析构函数则相反 1.类的构造函数(初始化函数) 所谓初始化,就是把一个刚创建的数据设置成我想要的值,而不是一 ...

  4. 【linux】主机名被改为bogon原理分析|修改主机名hostname的方法

    目录 linux主机名被更改为bogon原理分析 修改主机名的方法 1.临时修改,重启失效 2.永久生效 linux主机名被更改为bogon原理分析 博客原址:http://blog.csdn.net ...

  5. 【主机名变bogon】linux主机名被更改为bogon原理分析

    博客原址:http://blog.csdn.net/weiwan721/article/details/48463371 问题描述: 操作系统为RHEL6.5,安装时使用的是默认主机名localhos ...

  6. Mycat、Mysqld错误集

    一.Mysqld 问题: 源 "MySQL 5.7 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包.请检查源的公钥 URL 是否配置正确. 解决方 ...

  7. Linux中Mycat远程连接Mysql8.0提示密码错误

    Linux中Mycat远程连接Mysql8.0提示密码错误 问题: 当在linux中使用mycat远程连接时候会提示密码错误,具体如下: 解决 防火墙 最开始以为是防火墙未关闭 通过查看防火墙状态发现 ...

  8. 使用Mycat构建MySQL读写分离、主从复制、主从高可用

    数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能. 从数据库的角度来说,对于大多数应用来说,从集中到分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,即S ...

  9. MyCAT常用分片规则之分片枚举

    MyCAT支持多种分片规则,下面测试的这种是分片枚举.适用场景,列值的个数是固定的,譬如省份,月份等. 在这里,需定义三个值,规则均是在rule.xml中定义. 1. tableRule 2. fun ...

最新文章

  1. 测试心得:微图书销售小程序
  2. 国产操作系统UOS —— 你开始使用了吗?这个新年假期我已安装好了!
  3. java获取服务器状态_获取远程服务器上 Java 进程的运行状态
  4. 宝塔php gd库,宝塔面板安装 EasyImag – 一款最简单图床的安装体验
  5. oracle dataguard 03113 error code solution
  6. 鱼骨图分析法实际案例_8D根本原因分析——5WHY与鱼骨图培训课件(PPT64完整详细)...
  7. 一个数据科学家对商学院的建议
  8. linux检查python安装情况,使用Python检测Linux服务器连接状态
  9. 学生如何免费使用Jetbrains旗下包含Pycharm等开发工具(中文详细教程)
  10. 电容电阻电感的等效分析
  11. 郭德纲相声清晰版 高速下载【全部更新】
  12. C#Unity3d怪物在一定范围内巡逻发现玩家自动跟踪攻击,血量低于30%自动向后跳3米并缓慢回血的代码和使用
  13. 安利这几个网站和软件给你
  14. Notion数字笔记使用教程
  15. bugku never give up
  16. scrapy_redis只能使用redis的db0?
  17. JSON是什么?JSON字符串是什么?JSON对象又是什么?
  18. Scrapy爬取北京公交并保存MYSQL数据库实例
  19. 完美国际真数苹果_预告| 绿萌再创苹果、桃、梨品质分选风向标!
  20. 找到右下角弹广告的真凶

热门文章

  1. 测试界的飞虎队:测试人才战略——测试行业的精英战略(学习了)
  2. 仙剑5计算机丢失,《仙剑奇侠传5》制作得失谈 看国产RPG的通病
  3. 南开22春学期(高起本1709、全层次1803-2103)《职场心理(麦课)》在线作业【标准答案】
  4. HIT 软件构造 lab2实验报告
  5. 通熟易懂的 Elasticsearch入门
  6. 0/0型极限等于多少_鹤岗钢制乙级防火门多少一平方_辽宁中安华泰防火门
  7. 新垣结衣自拍照_如何安全地进行自拍照(不会掉下悬崖或被汽车撞到)
  8. 分布式锁-Redisson
  9. Java异常详解及自定义异常
  10. cocos2dx基础篇——音乐音效SimpleAudioEngine