SQL Server错误:字符串或二进制数据将被截断

Anu*_*uya 12 sql-server sql-server-2005

我的桌子:

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
Run Code Online (Sandbox Code Playgroud)

插入查询:

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)
Run Code Online (Sandbox Code Playgroud)

错误:

Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)

这是为什么 ???

Tre*_*ors 53

您尝试编写的数据多于特定列可以存储的数据.根据每个字段的大小检查您尝试插入的数据的大小.

在这种情况下,transaction_status是一个varchar(10),你试图存储19个字符.