• 一个奇怪的问题:Last_Errno: 1264 Error 'Out of range value for column 0x322E36343030


    场景环境:

      1. 主从都是:Server version: 5.7.16-log MySQL Community Server (GPL)

      2.操作系统:CentOS release 6.7 (Final)

      3.业务端通过SAS软件,向改主库中批量写入几百条数据。

    接到报警,发现从库show slave status G; 有如下报警

    Last_Errno: 1264
    Last_Error: Error 'Out of range value for column 'loan_amount' at row 1' on query. Default database: 'chedai'. Query: 'INSERT INTO test_list2 (loan_amount,APPLYUSERGROUPID,lastapplyid,validdate)  VALUES ( 0x322E3634303030303030303030303030303030652B303035 , 0x3131313130313234 , 0x392E3839353230393030303030303030303030652B303036 , 0x323031382D30352D3331 )'
    Skip_Counter: 0
    View Code

    从库在应用主库binlog时,发现实际value超过字段定义长度。但疑问时:为什么主库能成功执行,从库就报错。

    从主库查到已经成功插入的数据表为:

    +-------------+------------------+-------------+------------+
    | loan_amount | APPLYUSERGROUPID | lastapplyid | validdate |
    +-------------+------------------+-------------+------------+
    | 264000 | 11110124 | 9895209 | 2018-05-31 |
    | 80000 | 11110122 | 9896660 | 2018-05-31 |
    | 216000 | 11111162 | 9900036 | 2018-05-31 |
    | 208000 | 11143122 | 9907101 | 2018-05-31 |
    | 176000 | 11121775 | 9922122 | 2018-05-31 |
    | 110000 | 11111804 | 9928679 | 2018-05-31 |
    | 68800 | 11110963 | 9941918 | 2018-05-31 |
    | 68000 | 11143124 | 9944861 | 2018-05-31 |
    | 50000 | 11111164 | 9949087 | 2018-05-31 |
    | 54000 | 11121640 | 9951020 | 2018-05-31 |
    +-------------+------------------+-------------+-----------

    解析对应的binlog,确实所有的value都变成了16进制,截图如下:

    疑点:为什么mysqlbinlog解析出来value是16进制的。同时也匹配上了slave上的报错信息。

    想到这个库的binlog_format设置的是mixed,第一想法是如果改为ROW格式,是否可以规避这个问题呢,如果做了如下测试:

    1. mysql>set global binlog_format=row;

    2. 叫研发侧的同学按原步骤,重新写入数据。

    3.解析对应binlog,结果如下:

    至此,mysqlbinlog能正常解析出来,与此同时slave也正常同步上了。

    结论:本次环境通过修改binlog_format=row,成功规避掉的了这个问题。同时也建议生产环境设置该参数为row,但是具体是什么原因导致的,之前有文章提到是jdbc版本和mysql server版本兼容的问题,详见:

    http://www.itpub.net/forum.php?mod=viewthread&action=printable&tid=1402633

  • 相关阅读:
    MySQL的数据库,数据表,数据的操作
    数组函数
    字符串函数,时间函数,数学函数,数组
    PHP函数
    php类型的相关函数,运算符,条件判断,循环
    PHP数据类型
    vector中erase用法注意事项
    C++11 右值引用&&
    vector中find和find_if的用法 以后再遍历剁手!
    在cocos2d中添加自己的shader教程
  • 原文地址:https://www.cnblogs.com/yiyuf/p/8961599.html
Copyright © 2020-2023  润新知