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

vik*_*kas 18 mysql sql sql-server

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

CREATE  TABLE `TEST` 
(

  `idTEST` INT NOT NULL ,

  `TESTcol` VARCHAR(45) NULL ,

  PRIMARY KEY (`idTEST`) 
);
Run Code Online (Sandbox Code Playgroud)

现在Insert一些价值观

INSERT INTO TEST
VALUES
(
    1,
    'Vikas'
)

select 

SELECT * FROM TEST;
Run Code Online (Sandbox Code Playgroud)

插入记录多于 length

INSERT INTO TEST
VALUES
(
    2,
    'Vikas Kumar Gupta Kratika Shukla Kritika Shukla'
)
Run Code Online (Sandbox Code Playgroud)

如果我们selectlength

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

 '47'
Run Code Online (Sandbox Code Playgroud)

它显示错误消息

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

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

如果问题不明确,请告诉我.

我知道这个错误的原因.我试图插入超过数据类型长度的值.

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

ech*_*_Me 62

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"
Run Code Online (Sandbox Code Playgroud)

用...来代替:

码:

# Set the SQL mode to strict 
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Run Code Online (Sandbox Code Playgroud)

要么

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

码:

SET @@global.sql_mode= '';
Run Code Online (Sandbox Code Playgroud)

  • 改变了模式但仍然显示相同的错误信息 (2认同)