当我尝试创建数据库图表时,出现以下错误:
Cannot insert the value NULL into column 'diagram_id', table 'MyDB.dbo.sysdiagrams'; column does
not allow nulls. INSERT fails.
The statement has been terminated.
The 'sp_creatediagram' procedure attempted to return a status of NULL, which is not allowed. A status of
0 will be returned instead. (.Net SqlClient Data Provider)
我正在使用SSMS 2012。
数据库设置为SQL Server 2012(110)的兼容级别
@@ Version是Microsoft SQL Server 2012 - 11.0.5343.0(X64)
答案 0 :(得分:2)
你的问题是创建表时的diagram_ID可能看起来像这样
CREATE TABLE <table_name>
( diagram_ID INT NOT NULL PRIMARY KEY,
n...,
)
这基本上意味着由于NOT NULL条件,无法将NULL值插入该列。所以插入语句如:
INSERT INTO <table_name>
(Diagram_ID, n...,)
VALUES
(NULL, n...,)
因为NULL而失败,你需要在那里有一个值(因为我称之为整数):
INSERT INTO <table_name>
(Diagram_ID, n...,)
VALUES
(23, n...,)
该列也可能是一个缩进列,在这种情况下,您无法控制可插入表中的内容。
答案 1 :(得分:1)
转到系统表并查找systemdiagrams表,然后将字段diagram_id的“身份指定”属性设为YES
答案 2 :(得分:0)
希望这对你有帮助,这个脚本解决了我的问题
DROP TABLE dbo.sysdiagrams;
GO
CREATE TABLE [dbo].[sysdiagrams]
(
[name] [sysname] NOT NULL,
[principal_id] [int] NOT NULL,
[diagram_id] [int] IDENTITY(1,1) PRIMARY KEY,
[version] [int] NULL,
[definition] [varbinary](max) NULL,
CONSTRAINT [UK_principal_name] UNIQUE ([principal_id],[name])
);
GO
EXEC sys.sp_addextendedproperty
@name=N'microsoft_database_tools_support',
@value=1 ,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=N'sysdiagrams';
GO