错误代码:1406。数据对于列来说太长了
CREATE TABLE `TEST`
(
`idTEST` INT NOT NULL ,
`TESTcol` VARCHAR(45) NULL ,
PRIMARY KEY (`idTEST`)
);
现在插入
一些值
INSERT INTO TEST
VALUES
(
1,
'Vikas'
)
select
SELECT * FROM TEST;
插入超过长度
的记录
INSERT INTO TEST
VALUES
(
2,
'Vikas Kumar Gupta Kratika Shukla Kritika Shukla'
)
如果我们选择
长度
SELECT LENGTH('Vikas Kumar Gupta Kratika Shukla Kritika Shukla')
'47'
它显示了错误信息
错误代码:1406。数据对于列来说太长了
但我的期望是,我想在表中插入至少前45个字符
如果问题不清楚,请告诉我。
我知道此错误的原因。我正在尝试插入超过数据类型长度的值。
我想要MySQL中的解决方案,因为它可以在MSSQL中使用。所以我希望它也能在MySQL中使用。
我认为关闭STRICT模式不是一个好的选择,因为应用程序可能会开始丢失用户输入的数据。
如果您从应用程序接收到TESTcol的值,您可以添加模型验证,就像在Rails中一样
validates :TESTcol, length: { maximum: 45 }
如果您使用脚本中SQL值进行操作,您可以使用SUBSTRING命令截断字符串
INSERT INTO TEST
VALUES
(
1,
SUBSTRING('Vikas Kumar Gupta Kratika Shukla Kritika Shukla', 0, 45)
);
最近我也遇到了这种情况。我完全迁移到了MySQL 5.7,一切都是默认配置。
所有之前的答案都已经很清楚了,我只想补充一些东西。
此 1406 错误也可能发生在您的函数/过程中,而不仅仅是表的列长度。
在我的例子中,我用参数varchar(16)触发了哪个调用过程,但是收到了32个长度值。
我希望这能帮助有类似问题的人。
MySQL将截断任何超过指定列宽的插入值。
要做到这一点没有错误,请尝试将SQL模式
切换为不使用严格
。
参考手册
要更改模式
这可以通过两种方式完成:
my。ini
(Windows)或my。MySQL安装目录中的cnf
(Unix)文件,并查找文本“sqlmode”查找:
代码:
# 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"
或者
代码:
SET @@global.sql_mode= '';
问题内容: 错误代码:1406。数据对于列而言太长 现在一些值 插入记录超过 如果我们的 它显示错误信息 错误代码:1406。数据对于列而言太长 但是我的期望是,我想在表中至少插入前45个字符 如果问题不清楚,请告诉我。 我知道此错误的原因。我正在尝试插入比数据类型长度更多的值。 我想要MySQL中的解决方案,因为它可能在中。所以我希望它也会出现在 MySQL中 。 问题答案: MySQL将截断任
从我的应用程序注册表单中,我试图将复选框值插入到mysql表中,但它抛出错误1406 Data对于列来说太长了。复选框的值为 0 或 1。而我的表结构是,创建表测试(checkbox_response位(1))... 我经历了一些事情,找到了解决这个问题的方法。解决方案是,我刚刚更改了sql模式SET@@global。sql_mode=“”…正确插入后。 虽然“我的数据类型大小”适合复选框值,但为
我在持久化LocalDate字段[在列中使用VARCHAR(20)类型]时收到以下错误: 字段定义如下: 我使用的是spring data starter(1.5.9版本)。它在内部使用hibernate 5.0.12。 根据博文https://www.thoughts-on-java.org/hibernate-5-date-and-time/ Hibernate 5,支持Java 8特性(Da
我有我的班级电影: 和我的控制器方法: 我得到一个错误: Servlet.service()的servlet[springDispatcher]在上下文与路径[/web编程]抛出异常[请求处理失败;嵌套异常org.springframework.dao.DataIntegrityViolationException:无法执行语句;SQL[n/a];嵌套异常是org.hibernate.except
我正在将.csv导入Mysql,如下所示: …引发以下错误: "对于第63行的“注释”列,数据太长" 我看着第63行。csv,而“评论”的长度为115。 create语句似乎没问题(带有): 在将其标记为副本之前,请注意: 这个StackOverflow解决方案显然不适合:我已经将< code >字符集utf8添加到< code>LOAD DATA sql中。 另一个StackOverflow解决
问题内容: 我的一个实体拥有一个名为的属性。JPA 2-Hibernate会为我生成模式,在我的情况下,RDBMS是MySQL。 被创建为一列,这是正确的。 用户开始创建记录,并且所有记录都能完美运行,但是随后一些用户收到了臭名昭著的错误。 该字段没有足够的空间容纳用户的机器记录!好,没问题 让我们更改架构! 因此,我打开实体类并将属性更改为: 顺便说一句,我声明: 重新启动应用程序后,我很高兴H