在我的本地 SQL Server 2014 上,它在远程服务器上运行良好我得到了这个

Posted

技术标签:

【中文标题】在我的本地 SQL Server 2014 上,它在远程服务器上运行良好我得到了这个【英文标题】:On my local SQL Server 2014 it works fine on the remote server I get this 【发布时间】:2017-03-27 00:49:12 【问题描述】:

System.Data.Entity.Infrastructure.DbUpdateException:更新条目时出错。有关详细信息,请参阅内部异常。

System.Data.Entity.Core.UpdateException:更新条目时出错。有关详细信息,请参阅内部异常。

System.Data.SqlClient.SqlException:无法将值 NULL 插入列“id”、表“Apartamente.dbo.ProductType”;列不允许空值。插入失败。该语句已终止。

在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)

【问题讨论】:

为什么会出现上述错误 [id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NOT NULL, 【参考方案1】:

我的猜测:

这是因为在您的本地服务器上,“id”列必须是标识列,而在远程服务器上则不是。

【讨论】:

如何设置? 在管理工作室中单击表上的设计,然后选择列并将列属性中的标识字段更改为是。如果您通过 t-sql 执行此操作,那么您必须 1. 创建一个具有标识的新表并删除现有表 2. 创建一个具有标识的新列并删除现有列 创建表 [dbo].[ProductType]( [id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NOT NULL, CONSTRAINT [PK_ProductType] PRIMARY KEY CLUSTERED ([id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]【参考方案2】:

您已创建一个包含not null 字段的列。

在您的字段属性中将其更改为 allow null

像这样:

【讨论】:

我必须将 id 列作为 PK,所以为什么它可以在本地服务器上运行,而不是在远程服务器上运行。身份设置为 yes 并递增 1。请问有什么建议吗? 不,我没有。但是还是不行 ApartamenteEntities db = new ApartamenteEntities(); db.ProductTypes.Add(productType); db.SaveChanges(); 先删除你的id,然后创建一个新的..然后在下面的属性上点击身份从no到yes..

以上是关于在我的本地 SQL Server 2014 上,它在远程服务器上运行良好我得到了这个的主要内容,如果未能解决你的问题,请参考以下文章

如何连接到 SQL Server 2008 Express 的本地实例

如何使用ODBC数据连接连接到本地SQL Server? (我得到“登录失败”)

无法安装 SQL Server 2008 R2 Express

使用laravel从sql server生成UUID数据类型(uniqueidentifier)失败

通过 QT C++ 连接到 SQL server 2005

如何在 Microsoft SQL Server Management Studio 2014 中更新表