【发布时间】:2020-01-25 07:09:11
【问题描述】:
我不知道为什么,但在尝试插入类似的内容后,我收到了错误消息 8152(在 SQL Server 2017 中)
INSERT INTO Users (usr_name, usr_pwd, usr_thing1, usr_thing2)
VALUES ('ticko', 'kgrhjwekr3h4', 1, '34798563');
进入餐桌
CREATE TABLE Users
(
usr_id INTEGER NOT NULL PRIMARY KEY IDENTITY(0, 1),
usr_name VARCHAR NOT NULL,
usr_pwd VARCHAR NOT NULL,
usr_thing1 INT NOT NULL,
usr_thing2 VARCHAR NOT NULL,
usr_group INT,
usr_status VARCHAR DEFAULT 'ACTIVE',
usr_created DATE DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (usr_group)
REFERENCES Groups(grp_reqid)
);
我得到的输出是
消息 8152,第 16 级,状态 14,第 1 行
字符串或二进制数据将被截断。
提前感谢您的帮助!
【问题讨论】:
-
您意识到您所有的
varchar列都有length of 1? -
Bad habits to kick : declaring VARCHAR without (length) - 您应该始终为您使用的任何
varchar变量和参数提供一个长度。由于您没有指定任何长度,因此您的VARCHAR列正好是一个字符 - 所以您尝试插入的字符串太长 因此发生此错误...
标签: sql sql-server tsql sql-server-2017