ms_sql错误:ODBC错误代码(22001)将截断字符串或二进制数据。
很奇怪的一个问题:
不知道为啥我以前旧的版本都没错,
旧表结构如下:
CREATE TABLE [Table1](
id int not null identity (1, 1),
name char(128) not null primary key,
text char(255) null);
CREATE TABLE [Table2](
id int not null identity (1, 1),
name char(128) not null primary key,
text char(255) null);
修改后如下:
CREATE TABLE [Table1](
id int not null identity (1, 1) primary key,
name char(128) not null ,
text char(255) null);
CREATE UNIQUE INDEX UQ_NAME_INDEX ON [Table1](name);
CREATE TABLE [Table2](
id int not null identity (1, 1) primary key,
name char(128) not null ,
text char(255) null);
CREATE UNIQUE INDEX UQ_NAME_INDEX ON [Table1](name);
用旧表结构的时候,做拷贝的时候不会报错:
Table1数据:1,'nn',NULL
我先执行:SET IDENTITY_INSERT [Table2] ON
后将Table1拷贝到Table2可以拷贝过去
但是当我用新的表结构时就错误,这是为啥呐,照理来说如果是text字段为NULL导致insert时被截断,但是旧表结构为啥可以。
还有就是这个NULL值具体要怎么处理,插入时怎么才能知道Table1中的text字段是不是NULL,调试跟踪下,NULL并非''值,而是'烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫皞'
谁告诉我下这个具体要怎么处理,拷贝过去我要保持原表数据:1,'nn',NULL,而不是1,'nn',''