2013-03-25 22 views
8

mySQL kullanarak bir sorunum var.Geçersiz kullanım null değeri

Bu hata açılır:

Invalid use of null value

Ben bir tablo birincil anahtar iki özellik yapmaya çalışıyordu;

alter table contact_info 
add contactID varchar(10); 

alter table contact_info 
add suffixID varchar(8); 

alter table contact_info 
add titleID varchar(12); 

alter table contact_info 
add companyID varchar(12); 

alter table contact_info 
add phonetypeID char(2); 

herkes sorun ne biliyor mu: Burada

alter table contact_info 
add primary key(phone_number, contactID); 

benim contact_info tabloya koymak alter ifadeler şunlardır: İşte benim kodudur? Şimdiden teşekkürler.

cevap

9

Phone_number veya contactID'de boş değerli olan bir contact_info arayın. Tablodaki mevcut boş değerler ile birincil anahtar ekleyemezsiniz.

select * 
from contact_info 
where (phone_number is null or contactID is null) 

Değerlerin boş olduğu herhangi bir kaydı bulmak için bu SQL'i çalıştırın. Kayıtları güncelleyin, ardından birincil anahtarınızı tekrar uygulamayı deneyin.

Ne yaptığınızdan emin değilim, ancak önce verilerinizi yedeklemek isteyebilirsiniz !!! Herhangi bir güncellemeyi çalıştırmadan önce.

update contact_info 
set contactID = (select max(contactID) from contact_info) + 1 
where contactID is null 

update contact_info 
set phone_number = '555-1212' 
where phone_number is null 

verilerinizin çiftleri varsa

, onları bulmak ve bunları da güncellemeniz gerekir: Burada bir kişi kimliği ayarlamak için kullanmak mümkün olabilir güncellenmiş halidir. Burada çiftleri bulmak yapabilirsiniz: kusurlu sütunları nerede

-- Assuming the phone_number is duplicate (2 people living in the same house with the same phone number) 
select a.phone_number, count(1) 
from contact_info a 
group by a.phone_number 
having count(1) > 1 
+0

Şimdi '' anahtar için 'birincil' 'yinelenen bir girdi alıyorum. Bu ne anlama geliyor? –

+0

Birincil anahtar, örneğinizdeki gibi bir sütun veya 2 olsun, çoğaltmaları olmamalıdır. Yinelenenleri aramanıza yardımcı olacağım. – Jess

1

bu sorguyu çalıştırma söyleyecektir. Birincil anahtar olmak için NULL değerini ayarlayamazsınız.

SELECT * 
FROM contact_info 
WHERE phone_number IS NULL 
OR contactID IS NULL 
+0

Şimdi '' anahtar 'birincil' için bir yinelenen giriş alıyorum. Bu ne anlama geliyor? –