dm同步dm 同步 enum 类型报错,update数据不一致

【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

MySQL执行如下操作:

MariaDB [xx]> INSERT INTO `testform` (`id`) VALUES ('b284d7f8-5f28-4e0a-97bd-9d28a8eda7a1');
Query OK, 1 row affected (0.01 sec)

MariaDB [xx]> select * from testform;
+--------------------------------------+---------------+
| id                                   | pushingstatus |
+--------------------------------------+---------------+
| b284d7f8-5f28-4e0a-97bd-9d28a8eda7a1 | 0             |
+--------------------------------------+---------------+
1 row in set (0.00 sec)

MariaDB [xx]> UPDATE `testform` SET pushingstatus='1' WHERE id='b284d7f8-5f28-4e0a-97bd-9d28a8eda7a1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [xx]> select * from testform;
+--------------------------------------+---------------+
| id                                   | pushingstatus |
+--------------------------------------+---------------+
| b284d7f8-5f28-4e0a-97bd-9d28a8eda7a1 | 1             |
+--------------------------------------+---------------+
1 row in set (0.00 sec)

tidb 查询:

mysql> select * from testform;
+--------------------------------------+---------------+
| id                                   | pushingstatus |
+--------------------------------------+---------------+
| b284d7f8-5f28-4e0a-97bd-9d28a8eda7a1 | 2             |
+--------------------------------------+---------------+
1 row in set (0.01 sec)

tidb sql_mode 如下:

mysql> show global variables like 'sql_mode';
+---------------+--------------------------------------------+
| Variable_name | Value                                      |
+---------------+--------------------------------------------+
| sql_mode      | NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.00 sec)

为什么MySQL中update后的值,到了tidb中就变了呢?

你这是MariaDB吧?版本是多少?

https://docs.pingcap.com/zh/tidb/stable/dm-overview

dm对MariaDB 一直是实验特性。

MariaDB 版本 >= 10.1.2 (实验特性)

tidb中pushingstatus 是不是设置了自动增长或者默认值之类的啊,你插入个100的值试试。

1 个赞

是mariadb的,10.2.14-MariaDB 的版本

设置了默认值,枚举类型

CREATE TABLE `testform` (
    ->   `id` varchar(36) NOT NULL DEFAULT '',
    ->   `pushingstatus` enum('0','1','2') NOT NULL DEFAULT '0',
    ->   PRIMARY KEY (`id`)
    -> );

开 general log 追踪下

你show一下tidb这边表结构看看有没有变化

没有变化,通过dm通过过来的表结构与mariadb中是一致的

dm 的 general log 吗

下游 tidb 的

换mysql吧,不过mariadb不是和mysql差不多的嘛,坐等大佬解惑

官方文档写了额这是一个实验特性,说明肯定有一些bug存在,你这个问题可以提交给社区版主、社区负责人 ,官方相关人问一下是不是这种sql触碰到bug了

1 个赞

了解,回头提个issue

github issue,期待后续更新

https://github.com/pingcap/tidb/issues/56832

1 个赞

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。