【坑】INSERT IGNORE 会截断字符长度直到可以插入数据库
INSERT IGNORE和STRICT模式 当STRICT模式打开时,如果您尝试将无效值使用INSERT插入表中,MySQL将返回错误并中止语句。 但是,如果您使用INSERT IGNORE语句,MySQL将发出警告而不是错误。此外,在将值添加到表之前,它将尝试调整值以使其有效。 请考虑以下示例。 首先,我们创建一个的新表名为tokens: CREATE TABLE tokens ( s VARCHAR(6) ); 在此表中,列s仅接受长度小于或等于6的字符串。 其次,将长度为7的字符串插入tokens表中。 INSERT INTO tokens VALUES('abcdefg'); MySQL发出以下错误,因为严格模式已启用。 ERROR 1406 (22001): Data too long for column 's' at row 1 第三,使用INSERT IGNORE语句插入相同的字符串。 INSERT IGNORE INTO tokens VALUES('abcdefg'); MySQL在将数据插入tokens表之前截断了数据。此外,它会发出警告。 +---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1265 | Data truncated for column 's' at row 1 | +---------+------+----------------------------------------+ 1 row in set (0.00 sec) 数据库结果 SELECT * FROM `tokens`;