Ошибка SQL Server: строковые или двоичные данные будут усечены
Моя таблица:
log_id bigint
old_value xml
new_value xml
module varchar(50)
reference_id bigint
[transaction] varchar(100)
transaction_status varchar(10)
stack_trace ntext
modified_on datetime
modified_by bigint
Вставить запрос:
INSERT INTO [dbo].[audit_log]
([old_value],[new_value],[module],[reference_id],[transaction]
,[transaction_status],[stack_trace],[modified_on],[modified_by])
VALUES
('asdf','asdf','Subscriber',4,'_transaction',
'_transaction_status','_stack_trace',getdate(),555)
Ошибка:
Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.
The statement has been terminated.
Почему это???
Ответы
Ответ 1
Вы пытаетесь записать больше данных, чем может хранить определенный столбец. Проверьте размеры данных, которые вы пытаетесь вставить, с размерами каждого из полей.
В этом случае transaction_status является varchar (10), и вы пытаетесь сохранить 19 символов.
Ответ 2
этот тип ошибки обычно возникает, когда вам нужно помещать символы или значения больше, чем вы указали в таблице базы данных, как в этом случае:
вы указываете transaction_status varchar(10)
но вы на самом деле пытаетесь сохранить
_transaction_status
которые содержат 19 символов.
почему вы столкнулись с этим типом ошибок в этом коде.
Ответ 3
Эта ошибка обычно встречается при вставке записи в таблицу, где один из столбцов является типом данных VARCHAR или CHAR, а длина вставленного значения больше длины столбца.
Я не удовлетворен тем, как Microsoft решила сообщить об этом "сухом" ответном сообщении без какой-либо точки поиска ответа.