10

mySQL の使用に問題があります。

次のエラーが表示されます。

Invalid use of null value

テーブル内の 2 つの属性を主キーにしようとしていました。ここに私のコードがあります:

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

これが私の contact_info テーブルに入れたalterステートメントです:

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

誰が何が悪いのか知っていますか?前もって感謝します。

4

2 に答える 2

11

phone_number または contactID に null 値を持つ contact_info を探します。テーブルに既存の null 値を持つ主キーを追加することはできません。

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

その SQL を実行して、値が null であるレコードを見つけます。レコードを更新してから、主キーをもう一度適用してみてください。

何をしているのかわかりませんが、最初にデータをバックアップすることをお勧めします!!! 更新を実行する前に。contactID を設定するために使用できる可能性のある更新を次に示します。

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

データに重複がある場合は、それらを見つけて更新する必要があります。重複を見つける方法は次のとおりです。

-- 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
于 2013-03-25T02:54:52.790 に答える
1

このクエリを実行すると、問題のある列がどこにあるかがわかります。NULL値を主キーに設定することはできません。

SELECT *
FROM contact_info
WHERE phone_number IS NULL
OR contactID IS NULL
于 2013-03-25T02:56:14.143 に答える