0

我在 TiDB 中创建了一个带有 int 字段的表,在向该字段插入使用值 '' 时,出现错误“数据被截断”。

我的代码是这样的:

CREATE TABLE test(
i1 INT(11),
s1 VARCHAR(16)
)

INSERT INTO test(i1,s1) VALUES ('11','aa');   //ok

INSERT INTO test(i1,s1) VALUES ('','aa');    //Error 'Data Truncated'

INSERT INTO test(i1,s1) VALUES (NULL,'aa') //ok

而在 mysql 5.7 中,以下 sql 返回 ok

INSERT INTO test(i1,s1) VALUES ('','aa');

我的 TiDB 版本是:

发布版本:v1.0.6-1-g17c1319

Git 提交哈希:17c13192136c1f0bf26db6dec994b9f1b43c90f0

Git 分支:release-1.0

UTC 构建时间:2018-01-09 09:07:08

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

4

1 回答 1

0

在您介绍的情况下,TiDB 的行为与 MySQL 相同。此错误是由严格的 SQL 模式引起的。作为一种解决方法,您可以:

set @@sql_mode='';
INSERT INTO test(i1,s1) VALUES ('','aa');
于 2018-04-23T09:09:21.783 回答