(SQL Server 2017) 我收到错误消息 8152,我不知道为什么

(SQL Server 2017) I get error Msg 8152 and I don't know why

我不知道为什么,但我在尝试插入类似

的内容后收到错误消息 8152(在 SQL Server 2017 中)
INSERT INTO Users (usr_name, usr_pwd, usr_thing1, usr_thing2)
VALUES ('ticko', 'kgrhjwekr3h4', 1, '34798563');

进入table

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)
);

我得到的输出是

Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.

在此先感谢您的帮助!

您需要为 VARCHAR 列定义长度

例如

CREATE TABLE Users(
    usr_id INTEGER NOT NULL PRIMARY KEY IDENTITY(0, 1),
    usr_name VARCHAR(100) NOT NULL,
    usr_pwd VARCHAR(100) NOT NULL,
    usr_thing1 INT NOT NULL,
    usr_thing2 VARCHAR(100) NOT NULL,
    usr_group INT,
    usr_status VARCHAR(100) DEFAULT 'ACTIVE',
    usr_created DATE DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (usr_group)
        REFERENCES Groups(grp_reqid)
);

这是因为你没有给出你想在varchar和int中插入的长度。 首先将长度关联到它然后 运行 它,它不会显示任何错误。