(SQL Server 2017) Я получаю сообщение об ошибке 8152 и не знаю почему - PullRequest
0 голосов
/ 25 января 2020

Понятия не имею почему, но я получаю сообщение об ошибке 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
Строка или двоичные данные будут усечены.

Заранее спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 25 января 2020

Вам необходимо определить длину для ваших 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)
);
0 голосов
/ 25 января 2020

Это потому, что вы не указали, какую длину вы хотите вставить в varchar и int. Сначала свяжите его с длиной, затем запустите, он не покажет никаких ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...