无法在具有唯一索引“IX_ta_Kullanici”的对象“dbo.ta_Kullanici”中插入重复的键行。\r\n语句已终止

Posted

技术标签:

【中文标题】无法在具有唯一索引“IX_ta_Kullanici”的对象“dbo.ta_Kullanici”中插入重复的键行。\\r\\n语句已终止【英文标题】:Cannot insert duplicate key row in object 'dbo.ta_Kullanici' with unique index 'IX_ta_Kullanici'.\r\nThe statement has been terminated无法在具有唯一索引“IX_ta_Kullanici”的对象“dbo.ta_Kullanici”中插入重复的键行。\r\n语句已终止 【发布时间】:2015-05-29 08:46:04 【问题描述】:

我尝试开发一个将数据从 excel 表插入到 SqlServer 的程序。 尝试将数据插入 sqlserver 时出现错误。这是我的错误信息

“无法在对象 'dbo.ta_Kullanici' 中插入重复的键行 唯一索引 'IX_ta_Kullanici'。\r\n语句已终止。"

ID 在我的表中是唯一且自动递增的。

感谢您的帮助! :)

我的部分代码在这里;

 if (!check)
                    
                        kul = new ta_Kullanici();
                        hata = new KullaniciHata();
                        hata.AdSoyad = kullanicilar.Rows[i][7].ToString() + " " + kullanicilar.Rows[i][8].ToString();
                        hatalar.Add(hata);

                        kul.kul_ad = kullanicilar.Rows[i][7].ToString();
                        kul.kul_soyad = kullanicilar.Rows[i][8].ToString();
                        foreach (var bolge in bolgeler)
                        
                            if (kullanicilar.Rows[i][1].ToString().ToLower().IndexOf(bolge.bolge_ad.ToLower()) != -1)
                            
                                kul.kul_bolge_Id = bolge.bolge_Id;
                            
                        
                        kul.kul_ikTar = DateTime.Now;
                        kul.kul_statu = true;
                        kul.kul_guid = Guid.NewGuid().ToString();
                        kul.kul_ikIP = "127.0.0.1";
                        kul.kul_ik_kul_Id = 5;
                        kul.kul_TCKNo = kullanicilar.Rows[i][9].ToString();
                        kul.kul_kulAd = kullanicilar.Rows[i][6].ToString();
                        kul.kul_tip_enm = 2;
                        if (!string.IsNullOrWhiteSpace(kullanicilar.Rows[i][9].ToString()))
                        
                            kul.kul_sifre = kullanicilar.Rows[i][9].ToString();

                        
                        else
                        
                            kul.kul_sifre = "123123";
                        

                        checkList.Add(kul);
                        db.ta_Kullanici.Add(kul);
                        db.SaveChanges();
                        hatalar.Remove(hata);
                    

【问题讨论】:

引用数据库中主键的索引的名称是什么?默认情况下,它类似于 PK_dbo.Kullanici。似乎违反了另一个索引,而不是主键 在数据库的哪个列索引IX_ta_Kullanici上创建,该列不能重复? 是的。但这不是强制性的,只有一列,几列也可以 【参考方案1】:

查看有问题的表 dbo.ta_Kullanici 并查看名为 IX_ta_Kullanici 的索引位于哪一列。

相关索引是唯一索引,这意味着它不允许列有任何重复值

请记住,此索引可以在表中的任何列上,并且不限于主键。

【讨论】:

【参考方案2】:

所以基本上问题是该列具有唯一键的索引,该索引的作用是确保重复值不会在列上重复,要改变这一点,您可以去 Management Studio , 转到有该列的表,右键单击该列并单击进行修改。将出现一个屏幕,显示所有列。右键单击列旁边的小框并选择索引/键。然后你会看到一个 IsUnique 属性。将其设置为“否”。

【讨论】:

以上是关于无法在具有唯一索引“IX_ta_Kullanici”的对象“dbo.ta_Kullanici”中插入重复的键行。\r\n语句已终止的主要内容,如果未能解决你的问题,请参考以下文章

无法在具有唯一索引的对象中插入重复的键行

无法创建唯一索引,键重复 django postgres

无法在 Rails 3.2 中使用复合唯一索引将记录添加到连接表

具有过滤索引的实体框架 - “无法在对象中插入重复的键行”

由于多列上的唯一索引,无法更新 Rails 中的父记录和嵌套记录

MongoDB中唯一索引的优势