Kısıtlamalar etkinleştirilemedi. Bir veya daha fazla satır boş olmayan, benzersiz veya yabancı anahtar kısıtlamalarını ihlal eden değerler içeriyor


168

Bir dış birleştirme yapmak ve başarıyla informixveritabanında idam ama benim kod aşağıdaki istisna olsun:

DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat);

Kısıtlamalar etkinleştirilemedi. Bir veya daha fazla satır, boş olmayan, benzersiz veya yabancı anahtar kısıtlamalarını ihlal eden değerler içeriyor.

Sorunu biliyorum, ama nasıl düzelteceğimi bilmiyorum.

Dış birleşimi yaptığım ikinci tablo, bir önceki dış birleşim sorgusunda null olan bir bileşik birincil anahtar içerir.

DÜZENLE:

    SELECT UNIQUE a.crs_e,  a.crs_e  || '/ ' || a.crst crs_name, b.period,
           b.crscls, c.crsday, c.from_lect, c.to_lect,
           c.to_lect - c.from_lect + 1 Subtraction, c.lect_kind, e.eval, e.batch_no,
           e.crsnum, e.lect_code, e.prof_course
    FROM rlm1course a, rfc14crsgrp b, ckj1table c, mnltablelectev d,
         OUTER(cc1assiscrseval e)  
    WHERE a.crsnum = b.crsnum 
    AND b.crsnum = c.crsnum 
    AND b.crscls = c.crscls 
    AND b.batch_no = c.batch_no 
    AND c.serial_key = d.serial_key  
    AND c.crsnum = e.crsnum  
    AND c.batch_no = e.batch_no  
    AND d.lect_code= e.lect_code 
    AND d.lect_code = .... 
    AND b.batch_no = ....

Sorun tablo ile olur cc1assiscrseval. Birincil anahtar (batch_no, crsnum, lect_code) şeklindedir.

Bu sorun nasıl çözülür?


DÜZENLE:

Tavsiyeye göre @PaulStock: Söylediklerini yapıyorum ve şunu elde ediyorum:

? dt.GetErrors () [0] {System.Data.DataRow} HasErrors: true ItemArray: {object [10]} RowError: "Column 'eval' DBNull.Value öğesine izin vermiyor."

Ben değiştirerek benim sorunu çözmek Yani e.evaliçin, NVL (e.eval,'') evalsorunumu .ve bu çözer. Çok teşekkürler.


Sorgudan kaldırdığımda ,e.eval,e.batch_no,e.crsnum,e.lect_code,e.prof_courseher şey yolunda gidiyor. sorun ne lütfen.
Anyname Donotcare

ADO.NET'te, "benzersiz olmayan kümelenmiş dizin" in DataTable'da hatalı bir Data.UniqueConstraint öğesi oluşturacağı bir hata da vardır.
Brain2000

Yanıtlar:


352

Bu soruna genellikle aşağıdakilerden biri neden olur

  • AllowDBNull olarak ayarlanmamış sütunlar için null değerler döndürülüyor
  • aynı birincil anahtarla döndürülen yinelenen satırlar.
  • veritabanı ve veri kümesi arasında sütun tanımında uyuşmazlık (örn. karakter alanlarının boyutu)

Sorgunuzu yerel olarak çalıştırmayı deneyin ve sonuç kümesi çok büyük değilse sonuçlara bakın. Boş değerleri elimine ettiyseniz, tahminim birincil anahtar sütunlarının çoğaltılmasıdır.

Ya da tam hatayı görmek için, oluşturulan koda böyle bir Try / Catch bloğunu manuel olarak ekleyebilir ve ardından istisna yükseltildiğinde kesebilirsiniz:

resim açıklamasını buraya girin

Sonra komut penceresinde, GetErrorshata alma tablodaki yöntem çağırın .
C # için, komut ? dataTable.GetErrors()
VB için, komut? dataTable.GetErrors

resim açıklamasını buraya girin

Bu size hata olan tüm veri satırlarını gösterecektir. Daha sonra RowError, sorunla birlikte geçersiz sütunu söylemesi gereken her birinin için 'e bakabilirsiniz . Yani, hatalı ilk datarow hatası görmek için komut:
? dataTable.GetErrors(0).RowError
veya C #? dataTable.GetErrors()[0].RowError

resim açıklamasını buraya girin


4
Çok teşekkürler . >? dt.GetErrors()[0] {System.Data.DataRow} HasErrors: true ItemArray: {object[10]} RowError: "Column 'eval' does not allow DBNull.Value."
Anyname Donotcare

4
Muhteşem. Bu işe yaramadı, ancak veri kümesi için bir saat ekleyebilir ve sonra .GetErrors yazın ve değerleri genişletin. Bu son derece yararlı. Umarım bir dahaki sefere ihtiyacım olmadan unutmayacağım :)
dwidel

6
Evet bu gerçekten yardımcı oldu - benim hata neden alanın uzunluğu tablo bağdaştırıcısında sütun maxLength daha uzun oldu. Fark ettiğim bir şey, tasarımcı dosyasındaki kesme noktasına ulaşmak için Araçlar> Seçenekler> Hata Ayıklama'ya gitmeniz ve "Yalnızca Kodumu Etkinleştir" seçeneğinin işaretli olmadığından emin olmanızdı. Daha sonra tasarımcı dosya kodunda gezinmenize izin verir.
e-on

1
Teşekkürler @PaulStock cevap için ben de aynı sorunu çözmek var.
Uday

1
Bu son derece yararlı, veri sütun uzunluğu arasında bir uyumsuzluk buldum - veri kümesinde değil, veritabanında artırıldı.
Rob

38

Veri kümesindeki kısıtlamaları devre dışı bırakabilirsiniz. Kötü verileri tanımlamanıza ve sorunu çözmenize yardımcı olur.

Örneğin

dataset.TableA.Clear();
dataset.EnforceConstraints = false;
dataAdapter1.daTableA.Fill(dataset, TableA");

Doldurma yöntemi sizin için biraz farklı olabilir.


1
Bu, "kötü veriler" değil, Veri Kaynağı Yapılandırma Sihirbazı'nın oldukça kötü davranışları olan sorunuma neden olan verileri bulmama yardımcı oldu. Görünüşe göre çıkıyor ve DB ile konuşmak rağmen önbellek etkin değil, revize sütun kısıtlamaları (ve önyükleme için eklenmiş bir tablo eksik değil).
fortboise

Bu cevap için teşekkürler. Büyük / Küçük Harfe Duyarlı bir sorunum vardı ve bunu Veri Kümesinde uygun şekilde ayarlamam gerekiyordu.
Dan

10

Bu, tablodaki hata içeren tüm satırları bulur, satırın birincil anahtarını ve bu satırda oluşan hatayı yazdırır ...

Bu C #, ama VB dönüştürmek zor olmamalı.

 foreach (DataRow dr in dataTable)
 {
   if (dr.HasErrors)
     {
        Debug.Write("Row ");
        foreach (DataColumn dc in dataTable.PKColumns)
          Debug.Write(dc.ColumnName + ": '" + dr.ItemArray[dc.Ordinal] + "', ");
        Debug.WriteLine(" has error: " + dr.RowError);
     }
  }

Hata! PKColumns, DataTable'ı genişlettiğimde, DataTable'ın birincil anahtarını oluşturan tüm sütunları anlatan eklediğim bir şey. Veri tablonuzdaki Birincil Anahtar sütunlarını biliyorsanız, bunlar arasında buradan geçiş yapabilirsiniz. Benim durumumda, tüm veri tablolarım PK sütunlarını bildiğinden, tüm tablolar için bu hatalar için otomatik olarak hata ayıklama yazabilirim.

Çıktı şöyle görünür:

Row FIRST_NAME: 'HOMER', LAST_NAME: 'SIMPSON', MIDDLE_NAME: 'J',  has error: Column 'HAIR_COLOR' does not allow DBNull.Value.

Yukarıdaki PKColumns bölümü hakkında kafanız karıştıysa - bu sütun adlarını ve değerlerini yazdırır ve gerekli değildir, ancak soruna hangi sütun değerlerinin neden olabileceğini belirlemek için yararlı sorun giderme bilgileri ekler. Bu bölümün kaldırılması ve geri kalanının tutulması, soruna neden olan sütunu not eden SQLite hatasını yazdırmaya devam edecektir.


1
Nerede yanlış gittiğini bulmak için mükemmel bir yol. Verilerle tutarsızlıkların olduğu yerde kalıtım yoluyla aldığım bir çözümde aldatıcı sorunlara tamamen yardımcı oldum. Her ne kadar bir DataSet üzerinde ve ben sadece her tablo, sonra her satır üzerinden yinelenen. Yapabilirsem +10.
Andez

Bu benim için çalıştı. Bu bir Column 'MyColumn' does not allow DBNull.Value, ama bunu başka bir şekilde göstermezdi. Teşekkürler :)
Alex

7
  • Tablo bağdaştırıcısı sorgusunda adlandırılan alanların, tanımladığınız sorgudaki alanlarla eşleştiğinden emin olun. DAL uyumsuzluklardan hoşlanmıyor gibi görünüyor. Bu, bir tabloya yeni bir alan ekledikten sonra genellikle sprocs ve sorgularınıza olur.

  • Veritabanındaki bir varchar alanının uzunluğunu değiştirdiyseniz ve XSS dosyasında bulunan XML onu almadıysa, XML'de alan adını ve öznitelik tanımını bulun ve el ile değiştirin.

  • Döndürülen verilerle ilgili değilse, tablo bağdaştırıcılarındaki seçili listelerden birincil anahtarları kaldırın.

  • Sorgunuzu SQL Management Studio'da çalıştırın ve yinelenen kayıtların döndürülmediğinden emin olun. Yinelenen kayıtlar, bu hataya neden olacak yinelenen birincil anahtarlar oluşturabilir.

  • SQL sendikaları sorun çıkarabilir. Bir masa adaptörünü diğerlerinden önce 'lütfen bir çalışan seçin' kaydı ekleyerek değiştirdim. Diğer alanlar için, örneğin bir uzunluktaki dizeleri içeren kukla veriler sağladım. DAL şemayı bu ilk kayıttan çıkardı. Uzunluğunda dizeleri olan 12 kayıt başarısız oldu.


1
SO'ya hoş geldin, Bob. Cevabınızı düzenledim (yine de inceleniyor). Örneğin, yanıtlarda selamlama ve imza almamayı tercih ediyoruz ("noice" olarak kabul edilir, lütfen SSS'ye bakın). Adınız ve gravatarınız her zaman cevabın altında her zaman gösterilecektir.
Christoffer Lette

5

Bu benim için çalıştı, kaynak: burada

Bu hatayı aldım ve DB kısıtlamaları ile ilgili değildi (en azından benim durumumda). Bir grup kayıt döndüren bir GetRecord sorgusu ile bir .xsd dosyası var. Bu tablonun sütunlarından biri "nvarchar (512)" idi ve projenin ortasında "nvarchar (MAX)" olarak değiştirmem gerekiyordu.

Kullanıcı bu alana 512'den fazla girene kadar her şey yolunda gitti ve biz "Sınırlamalar etkinleştirilemedi. Bir veya daha fazla satır boş, benzersiz veya yabancı anahtar kısıtlamalarını ihlal eden değerler içeriyor."

Çözüm: DataTable'ınızdaki sütunların tüm MaxLength özelliğini kontrol edin.

"Nvarchar (512)" den "nvarchar (MAX)" olarak değiştirdiğim sütun hala MaxLength özelliğinde 512 değerine sahipti, bu yüzden "-1" olarak değiştirildi ve çalışıyor !!.


Benim sorunum MaxLength da olmalı. VWD 2010 veri kümesi tasarımcısını kullanıyorum. Kaynak tablo başka biri tarafından değiştirildi. Ben select *tüm sorguları yenilemek düşünerek SQL Sorgu değiştirildi , ama görünüşe göre mevcut uzunlukları güncellemedi. Bu nedenle, bir alan seçmek için sorguyu değiştirdim, .xsd'yi kaydettim, MaxLength defs'lerinden biri hariç tümünün gittiğini kontrol etmek için .xsd'yi Notepad ++ 'da açtım, sonra sorguyu yeniden değiştirdim select *. Bu MaxLengths yeniledi ve beni bu hatayı aştı.
Mark Berry

Çok teşekkür ederim, her şey yolunda gittiği için bütün gün başımı kaşıyorum. Ben de nvarchar (MAX) değiştirmek zorunda kaldı, ancak DataTable MaxLength 10 tutmuştu! Sana bir içki borçluyum!
Jon D

4

Sorun Veri Erişimi tasarımcısındadır. Visual Studio'da, Görünüm'ü "Sunucu Gezgini" nden Tasarımcı penceresine çektiğimizde, bir sütuna birincil anahtar rastgele eklenir veya aslında null olarak ayarlanmış olsa da NOT NULL değerine bir şey işaretlenir. SQL db sunucusundaki gerçek Görünüm oluşturma, herhangi bir birincil anahtar tanımlanmamış veya NOT NULL tanımlanmamış olsa da, VS tasarımcısı bu Anahtarı / kısıtlamayı ekliyor.

Bunu tasarımcıda görebilirsiniz - sütun adının solunda bir anahtar simgesiyle gösterilir.

Çözüm: Anahtar simgesine sağ tıklayın ve 'Anahtarı Sil'i seçin. Bu sorunu çözmelidir. Ayrıca bir sütuna sağ tıklayabilir ve VS Data erişim tasarımcısında bir sütunun özellik listesini görmek ve değerleri uygun şekilde değiştirmek için "Özellikler" i seçebilirsiniz.


3

Bu hata da projemde gösteriliyordu. Burada gönderilen tüm önerilen çözümleri denedim, ama hiç şans yok çünkü sorunun alanları boyutu, tablo anahtar alanları tanımı, kısıtlamalar veya EnforceConstraints veri kümesi değişkeni ile ilgisi yoktu.

Benim durumumda da proje tasarım zamanı (Veri Erişim Katmanı) sırasında koyduğum bir .xsd nesnesim var. Veritabanı tablosu nesnelerinizi Veri Kümesi görsel öğesine sürükledikçe, her bir tablo tanımını temel alınan veritabanından okur ve veritabanınızdaki tabloları oluşturduğunuzda kısıtlamaları tam olarak tanımladığınız gibi Veri Kümesi nesnesine kopyalar (SQL Server 2008 R2 durum). Bu, "null değil" veya "yabancı anahtar" kısıtlamasıyla oluşturulan her tablo sütununun SQL ifadeniz veya saklı yordamınız sonucunda da bulunması gerektiği anlamına gelir.

Tüm anahtar sütunları ve sorgularıma "null değil" olarak tanımlanan sütunları dahil ettikten sonra sorun tamamen ortadan kayboldu.


3

AllowDBNullXsd dosyasındaki veri tablosundaki bir tarih alanında True olarak ayarladığımda Mine çalışmaya başladı .


2

Muhtemelen aşağıdakilerle seçilen bir veya daha fazla sütuna benziyor:

   e.eval, e.batch_no, e.crsnum, e.lect_code, e.prof_course

vardır AllowDBNull için set Yanlış sizin Veri kümesi Definition içinde.


Bu tablodaki tüm sütunlar için null = true değerini boşuna koydum.
Anyname Donotcare

2

SELECT ifadesinin çalıştırılmasının neden kısıtlamaların etkinleştirilmesini içermesi gerektiği açık değildir. C # veya ilgili teknolojileri bilmiyorum, ancak Informix veritabanını biliyorum. Sorgulama kodunuz kısıtlamaları etkinleştiriyorsa (ve muhtemelen de devre dışı bırakıyorsa) sistemde garip bir şey oluyor.

Eski moda, standart olmayan Informix OUTER katılma göstergesinden de kaçınmalısınız. Informix'in inanılmaz eski bir sürümünü kullanmıyorsanız, SQL-92 birleşim stilini kullanmanız gerekir.

Sorunuz iki dış birleşimden bahsediyor gibi görünüyor, ancak örnek sorguda yalnızca bir tane gösteriliyor. Bu da biraz kafa karıştırıcı.

' e' Ve diğer tablolar arasındaki birleştirme koşulları :

AND c.crsnum = e.crsnum  
AND c.batch_no = e.batch_no  
AND d.lect_code= e.lect_code 

Bu alışılmadık bir kombinasyon. İlgili referans bütünlüğü kısıtlamaları ile şemanın ilgili alt kümesine sahip olmadığımızdan, bunun doğru olup olmadığını bilmek zordur, ancak böyle 3 tablo arasında birleştirmek biraz sıra dışıdır.

Bunların hiçbiri sizin probleminize kesin bir cevap değildir; ancak, bazı rehberlik sağlayabilir.


2

Şimdiye kadar yapılan tüm girdiler için teşekkür ederiz. Ben sadece bir DB başarıyla normalleştirilmiş, kendi uygulama (örneğin veri kümesine) ya da öylesine herhangi bir şema değişiklikleri güncellenmiş olsa da eklemek istiyorum, başka bir nedeni de var: sql CARTESIAN ürün (sorgularda tabloları birleştirirken).

Kartezyen bir sorgu sonucunun varlığı, birleştirilen iki veya daha fazla tablonun birincil (veya önce anahtar) tablosunda yinelenen kayıtlara neden olur. SQL'de bir "Where" deyimi belirtmiş olsanız bile, örneğin ikincil tablo ile JOIN eşit olmayan birleştirme içeriyorsa (2 veya daha fazla ilişkisiz tablodan veri alındığında yararlıdır) bir Kartezyen oluşabilir:

TbFirst INNER'DEN tbSystem'a KATILIN tbFirst.reference_str <> tbSystem.systemKey_str

Bunun çözümü: tablolar ilişkili olmalıdır.

Teşekkürler. chagbert


1

Aynı problemi yanlıştan gerçeğe çevirerek çözdüm. sonunda veritabanına girdim ve bit alanımı null'a izin verecek şekilde değiştirdim ve sonra xsd'mi yeniledim ve wsdl ve reference.cs'mi yeniledim ve şimdi her şey yolunda.

this.columnAttachPDFToEmailFlag.AllowDBNull = true;

1

Kısa ve kolay Yalnızlık:

MSSQL Studio Sever'e gidin;

Bu hatanın nedeninin sorgusunu çalıştırın: Benim durumumda, kimlik belirtimi artışını 1 ile ayarlamayı unuttuğum için kimlik değerinin boş olduğunu görüyorum .

resim açıklamasını buraya girin

Otomatik alan olarak kimlik alanı için 1 girildi ve değiştirme görünümünde NULLS izin verme

resim açıklamasını buraya girin

Bu kodda bindingsource ve tabel adaptör atma hatasına neden olan hata buydu:

   this.exchangeCheckoutReportTableAdapter.Fill(this.sbmsDataSet.ExchangeCheckouReportTable);

0

DirectCast (dt.Rows (0), DataRow) .RowError

Bu doğrudan hatayı verir


2
İyi bir öneri, ama bu sadece datatable içinde hata olan ilk satır ise işe yarıyor, değil mi? 100 iyi satır ve sonra 1 kötü satır döndürülürse, bir RowErroraçık Rows(0)olmayacak mı?
PaulStock

0

Veri tablosunu almak için visual studio veri kümesi tasarımcısını kullanıyorsanız ve 'Sınırlamalar etkinleştirilemedi' hatası veriyor. Aynı sorunla karşılaştım, veri kümesi tasarımcısının verilerini önizlemeye çalışın ve veritabanınızdaki tabloyla eşleştirin.

Bu sorunu çözmenin en iyi yolu, tablo bağdaştırıcısını silmek ve bunun yerine yeni bir tane oluşturmaktır.


0

* İkincil yol: *


Birincil anahtar olarak [id] 'e ihtiyacınız yoksa,

Birincil anahtar özelliğini kaldırın:

DataSet> TableAdapter> [id] sütununa sağ tıklayın> Anahtarı sil ... 'i seçin.

Sorun çözülecek.


0

Ayrıca bu sorun vardı ve temel SQL sunucusunda değiştirilen sütunun revize boyutunu yansıtmak için * .xsd değiştirdikten sonra çözüldü.


0

Bu hatayı düzeltmek için, sorunlu tablo bağdaştırıcısını Veri Kümesi tasarımcısından çıkardım ve veri kümesini kaydettim ve ardından masaüstünün yeni bir kopyasını sunucu gezgininden sürükledim ve bu düzeltildi


0

Bu sorunu, .xsd dosyasını bir XML okuyucu ile açarak ve görünümlerimden birine yerleştirilmiş bir kısıtlamayı silerek çözdüm. Herhangi bir nedenden ötürü, görünümü veriye eklediğimde, olmaması gerektiğinde sütunlardan birine birincil anahtar kısıtlaması ekledi.

Diğer yol ise .xsd dosyasını normal olarak açmak, soruna neden olan tabloya / görünüme bakmak ve herhangi bir anahtarı silmek (sağ tıklama sütunu, delete key orada olmaması gereken ) .


0

İstisna için yukarıda listelenenlere bir başka olası neden daha eklemek istiyorum (özellikle veri kümesi şemasını manuel olarak tanımlamak isteyenler için):

veri kümenizde iki DataSet.Reletions.Add()tablonuz varsa ve ilk tablonun alanından ( chfield) ikinci tablonun alanına ( ) tanımlanmış bir ilişki ( ) pfieldvarsa, bu alana benzersiz olmak için örtük bir kısıtlama eklenir olmasa bile tanımınızda açıkça ne benzersiz ne de birincil anahtar olarak belirtilir.

Sonuç olarak, o üst alanda ( pfield) tekrarlanan değerlere sahip satırlarınız varsa, bu istisnayı da alırsınız.


0
            using (var tbl = new DataTable())
            using (var rdr = cmd.ExecuteReader())
            {
                tbl.BeginLoadData();

                try
                {
                    tbl.Load(rdr);
                }
                catch (ConstraintException ex)
                {
                    rdr.Close();
                    tbl.Clear();

                    // clear constraints, source of exceptions
                    // note: column schema already loaded!
                    tbl.Constraints.Clear();
                    tbl.Load(cmd.ExecuteReader());
                }
                finally
                {
                    tbl.EndLoadData();
                }
            }

0

Aynı hata türünü aldım ve benim durumumda, seçim alanlarını kaldırarak ve bir * ile değiştirerek çözdüm. Neden olduğu hakkında hiçbir fikrim yok. Sorguda yazım hataları veya süslü bir şey yoktu.

En iyi çözüm değil ama başka hiçbir şey işe yaramadı ve bitkin düşüyordum.

Açık bir cevap arayışımda bunu şu şekilde buldum: https://www.codeproject.com/questions/45516/failed-to-enable-constraints-one-or-more-rows-cont

Çözüm 8

Bu hata da Visual Studio 2010 kullanarak projemde gösteriliyordu. Diğer bloglarda yayınlanan diğer çözümleri denedim, ama hiç şans yok çünkü alan alanları, tablo anahtar alan tanımı, kısıtlamalar veya EnforceConstraintsveri kümesi değişkeni ile ilgisi yoktu .

Benim durumumda, proje tasarım süresi boyunca (Veri Erişim Katmanında) koyduğum bir .xsd nesnesim var. Veritabanı tablosu nesnelerinizi Veri Kümesi görsel öğesine sürükledikçe, temel alınan veritabanındaki her tablo tanımını okur ve kısıtlamalarıDataset tabloları oluşturduğunuzda tam olarak tanımladığınız gibi nesneye (benim durumumda SQL Server 2008 R2) ). Bu, "null değil" veya "yabancı anahtar" kısıtlamasıyla oluşturulan her tablo sütununun SQL ifadeniz veya saklı yordamınız sonucunda da bulunması gerektiği anlamına gelir.

Tüm kısıtlanmış sütunları (null değil, birincil anahtar, yabancı anahtar, vb.) Sorgularıma ekledikten sonra sorun tamamen kayboldu.

Belki de tüm tablo sütunlarının sorgu / saklı yordam sonucunda bulunması gerekmez, ancak kısıtlamalar hala uygulandığından, sonuçta bazı kısıtlanmış sütunlar görünmüyorsa hata gösterilir.

Umarım bu başka birine yardımcı olur.


-1

Benim durumumda bu hata bir dize sütununun boyutu tarafından kışkırtıldı. Aynı sorguyu farklı bir araçta yürüttüğümde garip olan, tekrarlanan değerler veya null değerler yoktu.

Sonra bir dize sütun boyutunun boyutu 50 olduğunu keşfettim, bu yüzden dolgu yöntemini çağırdığımda değer doğranarak bu istisnayı atarak doğdu.
Ben sütun tıklayın ve özellikleri boyutu 200 olarak ayarlayın ve hata gitti.

Umarım bu yardım


-1

Ben bu sorunu "alt seçimi" yaparak çözdüm:

string newQuery = "select * from (" + query + ") as temp";

MySQL'de ne zaman yapılır, tüm collunms özellikleri (benzersiz, null olmayan ...) silinir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.