错误代码:1406。数据对于列而言太长
CREATE TABLE `TEST` ( `idTEST` INT NOT NULL , `TESTcol` VARCHAR(45) NULL , PRIMARY KEY (`idTEST`) );
现在Insert一些值
Insert
INSERT INTO TEST VALUES ( 1, 'Vikas' ) select SELECT * FROM TEST;
插入记录超过 length
length
INSERT INTO TEST VALUES ( 2, 'Vikas Kumar Gupta Kratika Shukla Kritika Shukla' )
如果我们select的length
select
SELECT LENGTH('Vikas Kumar Gupta Kratika Shukla Kritika Shukla') '47'
它显示错误信息
但是我的期望是,我想在表中至少插入前45个字符
如果问题不清楚,请告诉我。
我知道此错误的原因。我正在尝试插入比数据类型长度更多的值。
我想要MySQL中的解决方案,因为它可能在中MS SQL。所以我希望它也会出现在 MySQL中 。
MS SQL
MySQL将截断任何超出指定列宽的插入值。
要使此没有错误,请尝试切换SQL mode为不使用STRICT。
SQL mode
STRICT
MySQL参考手册
改变模式
这可以通过两种方式完成:
my.ini
my.cnf
找:
码:
# 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= '';