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)
如果我们select的length
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.
要更改模式
这可以通过两种方式完成:
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)
要么
码:
SET @@global.sql_mode= '';
Run Code Online (Sandbox Code Playgroud)