2013-03-25 4 views
8

mySQL을 사용하는 데 문제가 있습니다.null 값의 사용이 잘못되었습니다

이 오류는 팝업 :

Invalid use of null value

나는 테이블의 기본 키에 두 개의 속성을 만들려고 노력했다;

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); 

아무도 무슨 일이야 알고 있나요 : 여기

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

내가 내 contact_info 테이블에 넣어 ALTER 문입니다 : 여기 내 코드는? 미리 감사드립니다.

답변

9

phone_number 또는 contactID에 null 값이있는 contact_info를 찾으십시오. 테이블에 기존 Null 값이있는 기본 키를 추가 할 수 없습니다.

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

해당 SQL을 실행하여 값이 null 인 레코드를 찾습니다. 레코드를 업데이트 한 다음 기본 키를 다시 적용 해보십시오.

내가 무엇을하고 있는지 잘 모르겠지만 데이터를 먼저 백업 해 두는 것이 좋습니다 !!! 업데이 트를 실행하기 전에.

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 

당신은 당신의 데이터 중복이있는 경우

, 당신은 그들을 찾을뿐만 아니라 사람들을 업데이트해야합니다 : 다음은 ContactID가를 설정하는 데 사용할 수있을 업데이트입니다. 다음은 중복 된 항목을 찾는 방법입니다.

-- 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

이제 '기본'키에 중복 항목이 표시됩니다. 그게 무슨 뜻입니까? –

+0

기본 키는 예제와 같이 하나의 열이든 2 번째이든 관계없이 중복되어서는 안됩니다. 중복 검색을 도와 드리겠습니다. – Jess

1

이 쿼리를 실행하면 문제가되는 열의 위치를 ​​알 수 있습니다. NULL 값을 기본 키로 설정할 수 없습니다.

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

이제 키 '기본'에 대한 중복 항목 ''이 표시됩니다. 그게 무슨 뜻 이죠? –

관련 문제