错误代码:1406。列的数据太长 - MySQL

新手上路,请多包涵

错误代码:1406。列的数据太长

CREATE  TABLE `TEST`
(

  `idTEST` INT NOT NULL ,

  `TESTcol` VARCHAR(45) NULL ,

  PRIMARY KEY (`idTEST`)
);

现在 Insert 一些值

INSERT INTO TEST
VALUES
(
    1,
    'Vikas'
)

select

SELECT * FROM TEST;

插入记录多于 length

 INSERT INTO TEST
VALUES
(
    2,
    'Vikas Kumar Gupta Kratika Shukla Kritika Shukla'
)

如果我们 select length

 SELECT LENGTH('Vikas Kumar Gupta Kratika Shukla Kritika Shukla')

 '47'

它显示错误消息

错误代码:1406。列的数据太长

但我的期望是,我想在 Table 中插入至少前 45 个字符

如果问题不清楚,请告诉我。

我知道这个错误的原因。我正在尝试插入超过数据类型长度的值。

我想要 MySQL 中的解决方案,因为它可能在 MS SQL 中。所以我希望它也可以在 MySQL 中。

原文由 vikas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

MySQL 将截断任何超过指定列宽的插入值。

要做到这一点而不会出错,请尝试将您的 SQL mode 切换为不使用 STRICT

Mysql参考手册


编辑:

改变模式

这可以通过两种方式完成:

  1. 在 MySQL 安装目录中打开 my.ini (Windows) 或 my.cnf (Unix) 文件,并查找文本“sql-mode”。

寻找:

代码:

 # Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

用。。。来代替:

代码:

 # Set the SQL mode to strict
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

或者

  1. 您可以在数据库管理工具中运行 SQL 查询,例如 phpMyAdmin:

代码:

 SET @@global.sql_mode= '';

原文由 echo_Me 发布,翻译遵循 CC BY-SA 4.0 许可协议

虽然上面的答案表明要更新 my.ini 文件,但我觉得将列长度更改为 TEXT 或 LONGTEXT 会更好,以便可以添加任何更高的长度。

原文由 Gopika Syam 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题