dm 上游执行 tidb 不兼容 ddl 如果恢复同步 和 如何开启 alter-primary-key

TIDB 3.0.12

DM 1.0.4

在上游mysql端有将字符类型timestamp 更改为DATETIME(3), 在DM数据同步不错中有替代操作的方法吗??

MYSQL端指定的语句

ALTER TABLE t_basic MODIFY COLUMN modify_time DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3);

  1. 抱歉当前 tidb 不支持这样变更字段,你会遇到以下报错:

ERROR 8200 (HY000): Unsupported modify column: type datetime(3) not match origin timestamp

  1. 应该可以在下游建新表使用 datetime 列,之后删除原表,rename 新表名。 DM 跳过此sql.
    你当前 task 同步是什么样子,有分库合表吗? 麻烦上传下 task 文件,多谢

暂时还没有分库合表,这种情况 还有和后面增加主键的情况,只能在TIDB端重建表,然后导入数据在开启同步了?

  1. 不支持的只能这样了, 添加主键新版本应该是可以添加了.

alter-primary-key 该参数支持session基本的变更吗

mysql> set session alter-primary-key=on; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 17 near “alter-primary-key=on”

没看到有这个变量的使用方法

你好,

需要修改 tidb 的配置文件并根据部署方式不同重启或 reload 方式让此参数生效。

  1. tidb-ansible 部署:修改 tidb-ansible/conf/tidb.yml;并通过 ansible-playbook rolling_update.yml -t tidb 生效
  2. tiup 部署:通过 tiup cluster edit-config cluster-name修改参数,并通过 tiup cluster reload cluster-name -R tidb 使参数生效

请注意: 在此开关开启前已经存在的表,且主键是整型类型时,即使之后开启此开关也不支持对此列表删除主键

了解了,感谢。

:clap: