Mysql 同步到tidb

  1. mysql 的字段 after_sale_reason 开始是null的,然后也包含null的值,通过执行下面的sql, alter table column 成 notnull, 其中的 null 会自动变为默认值。mysql 不产生binlog
  2. 该ddl语句在tidb 执行报错

ALTER TABLE offline_after_sale_goods MODIFY COLUMN after_sale_reason VARCHAR(512) NOT NULL DEFAULT ‘’ COMMENT ‘售后原因’

临时的解决方案,我手动把tidb的这些null的默认值,改为了’’, 然后执行该sql,成功。

帮忙看下这个是否是bug,后续能否支持?

推荐升级下版本,在 3.0.1 的测试环境执行是没问题了

我的版本是3.0.2

重现步骤 CREATE TABLE test_table ( id INT NOT NULL, text VARCHAR(45) NULL, PRIMARY KEY (id));

insert into test_table values(1, null); insert into test_table values(2, “adf”); insert into test_table values(3, null);

ALTER TABLE test_table CHANGE COLUMN text text VARCHAR(45) NOT NULL default ‘’;

然后ERROR: ERROR 1138 (22004): Invalid use of NULL value

下面是版本信息

我这边在 mysql 的测试结果也是不可以的。

好的,明白啦,谢谢。我们这边dba在操作的时候,把这些warning忽略了。

mark