Tsql T-SQL';无法插入值NULL';具有非空值的错误
我正在将一个简单的成员数据库迁移到Identity 2.0。我正在将Tsql T-SQL';无法插入值NULL';具有非空值的错误,tsql,ssms-2012,Tsql,Ssms 2012,我正在将一个简单的成员数据库迁移到Identity 2.0。我正在将createdatetime-NULL列复制到createdatetime-NOT-NULL列。我已经检查了数据源表中Membership.CreateDate列中的所有记录,以验证它们是否包含有效的日期时间。返回此错误: Cannot insert the value NULL into column 'CreateDate', table 'Settlement.dbo.AspNetUsers'; column does n
createdatetime-NULL
列复制到createdatetime-NOT-NULL
列。我已经检查了数据源表中Membership.CreateDate列中的所有记录,以验证它们是否包含有效的日期时间。返回此错误:
Cannot insert the value NULL into column 'CreateDate', table 'Settlement.dbo.AspNetUsers'; column does not allow nulls. INSERT fails.
The statement has been terminated.
我还尝试删除成员资格中的所有记录,但只删除了一条(其CreateDate列包含2012-12-27 01:35:03.610
)。我也犯了同样的错误
我正在SSMS中运行脚本
迁移脚本摘录:
CREATE TABLE [dbo].[AspNetUsers] (
[Id] [nvarchar](60) NOT NULL,
[UserName] [nvarchar](15) NOT NULL,
[AcId] INT NOT NULL,
[LocId] INT NOT NULL,
[CreateDate] [datetime] NOT NULL,
[Email] [nvarchar](60),
[EmailConfirmed] [bit] Default ((0)) NOT NULL,
[PasswordHash] [nvarchar] (100),
[SecurityStamp] [nvarchar] (60),
[PhoneNumber] [nvarchar] (15),
[PhoneNumberConfirmed] [bit] Default ((0)) NOT NULL,
[TwoFactorEnabled] [bit] Default ((0)) NOT NULL,
[LockoutEndDateUtc] [datetime],
[LockoutEnabled] [bit] Default ((0)) NOT NULL,
[AccessFailedCount] [int] Default ((0)) NOT NULL,
CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY ([Id])
);
GO
INSERT INTO AspNetUsers(Id, UserName, AcId, LocId, PasswordHash, SecurityStamp, CreateDate )
SELECT UserProfile.UserId, UserProfile.UserName, UserProfile.BaId, UserProfile.OfcId,
webpages_Membership.Password, webpages_Membership.PasswordSalt, webpages_Membership.CreateDate
FROM UserProfile
LEFT OUTER JOIN webpages_Membership ON UserProfile.UserId = webpages_Membership.UserId
GO
如果我将AspNetUsers CreateDate列更改为NULL,它会成功地将datetimes从一个表复制到另一个表,这样我就知道所有列名和类型都是正确的。
(做完这件事后,我跑了
ALTER TABLE[dbo].[AspNetUsers]ALTER COLUMN[CreateDate]datetime非空
并且得到了相同的错误)
这在数据库的生产副本中发生。我有一个数据库的开发副本,它是通过相同的EF代码first代码生成的,它成功地将数据复制到CreateDate NOT NULL字段中
我在这一点上束手无策。当源数据是有效的datetimes时,为什么会出现
无法将值NULL插入列的错误?或者为什么它不能将CreateDate列数据识别为有效的日期时间?您在用户配置文件中有一些用户在网页中没有相应的用户,因此您尝试插入没有任何信息的用户。您必须使用内部联接
而不是左侧外部联接
,或者为没有相应信息的用户提供默认值。谢谢,就是这样。UserProfile中有一个额外的孤立记录。一旦我删除了它,脚本就开始工作了。不删除额外记录的内部联接也起作用。