当尝试将数据插入到列的数据长度超过其定义宽度的 MySQL 表中时,您会遇到“错误代码:1406。数据对于列来说太长”错误。
考虑这个示例:
CREATE TABLE `TEST` ( `idTEST` INT NOT NULL , `TESTcol` VARCHAR(45) NULL , PRIMARY KEY (`idTEST`) );
在指定列长度内插入数据按预期工作:
INSERT INTO TEST VALUES ( 1, 'Vikas' );
但是,尝试插入超过最大列长度的数据会导致错误:
INSERT INTO TEST VALUES ( 2, 'Vikas Kumar Gupta Kratika Shukla Kritika Shukla' );
发生这种情况是因为 MySQL 截断了任何长于指定列的插入值
解决方案:
要解决此问题,请暂时禁用 MySQL 的严格模式:
在 my.ini (Windows) 中或 my.cnf (Unix) 文件:
编辑“sql-mode”设置以删除"STRICT_TRANS_TABLES":
# Set the SQL mode to strict sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
在数据库管理工具中使用 SQL 查询:
执行以下查询将全局 SQL 模式设置为空:
SET @@global.sql_mode= '';
禁用严格模式后,您可以插入超过列长度的数据。但是,请务必小心,因为这可能会导致数据截断和不一致,因此请谨慎使用此解决方案。
以上是如何解决MySQL错误1406:数据对于列来说太长?的详细内容。更多信息请关注PHP中文网其他相关文章!