MySQL Error number: MY-011570; Symbol: ER_GRP_RPL_COPY_FROM_EMPTY_STRING; SQLSTATE: HY000 报错 故障修复 远程处理

文档解释

Error number: MY-011570; Symbol: ER_GRP_RPL_COPY_FROM_EMPTY_STRING; SQLSTATE: HY000

Message: Error copying from empty string

错误说明:

MySQL错误号MY-011570,符号ER_GRP_RPL_COPY_FROM_EMPTY_STRING,SQLSTATE HY000表示在复制数据时,源表中的实际数据值是空字符串。在MySQL中,某一列的数据类型为字符串时,新的数据必须有具体的值,如果是空字符串,就会报ER_GRP_RPL_COPY_FROM_EMPTY_STRING错误。

常见案例

MySQL ER_GRP_RPL_COPY_FROM_EMPTY_STRING 错误一般出现在从一个表复制数据到另一个表时,例如使用INSERT INTO SELECT或者REPLACE INTO SELECT语句时,select出来的某一列值是空字符串而被插入或替换的列被定义为字符串类型时。例如:

CREATE TABLE tbl1 (

col_id INT,

col_name CHAR(10)

);

INSERT INTO tbl1 SELECT col1, ” FROM tbl2;

解决方法:

MySQL ER_GRP_RPL_COPY_FROM_EMPTY_STRING 错误的解决方法很简单,只需要确保插入/替换操作里面源列数据不能为空。也就是这样:

CREATE TABLE tbl1 (

col_id INT,

col_name CHAR(10)

);

INSERT INTO tbl1 SELECT col1, NULL FROM tbl2;

另外,如果 select 出来的某有字段值可能为NULL值,也可以使用IFNULL函数,将NULL值转换成NULL字符串:

INSERT INTO tbl1 SELECT col1, IFNULL(col2, ”) FROM tbl2;

当插入/替换数据时,有两个字段都是字符串类型的,但如果一个字段值是空字符串,而另一个字段值是NULL, 由于字段值需要都填充,MySQL会默认把NULL填充成空字符串,如果出现这种情况,可以使用COALESCE函数,将原本为NULL的字段值转换成NULL字符串:

INSERT INTO tbl1 SELECT col1, COALESCE(col2, ”) FROM tbl2;


数据运维技术 » MySQL Error number: MY-011570; Symbol: ER_GRP_RPL_COPY_FROM_EMPTY_STRING; SQLSTATE: HY000 报错 故障修复 远程处理