これは、主キーがあるが初期化値を指定していない場合に発生します。インサート自体が重複を引き起こしています。
あなたの場合、2つの可能性が思い浮かびます:
-
supp_id
は主キーであり、数値として宣言されています。 MySQLの古いバージョンでは、文字列値はサイレントに数値に変換されると思います。先頭の文字が文字であるため、値は0です。 -
別の
id
があります 主キーであるが、値が指定されておらず、auto_increment
が宣言されていないフィールド 。
編集:
次のコードが必要だと思います:
CREATE TABLE suppliers (
supplierId int NOT NULL auto_increment primary key,
supp_name varchar(255) unique,
company_name varchar(15) NOT NULL,
town varchar(15),
phone varchar(15)
);
INSERT INTO Suppliers(supp_name, company_name, town, phone)
Values ('ADT217', 'AdTec', 'Birmingham', '0121-368-1597'),
('CPS533', 'CPS', 'Maidenhead', '01382-893715'),
('FCL162', 'ForComp Ltd', 'Nottingham', '01489-133722'),
('KBC355', 'KBC Computers', 'Glasgow', '0141-321-1497');
いくつかのメモ:
- 通常は
varchar()
が必要ですchar()
ではなく 、文字列の最後にたくさんのスペースが本当に好きでない限り。 - テーブルに一意のサプライヤー名を追加し、IDを
auto_increment
として宣言しました 。 - 一重引用符は、文字列定数のANSI標準です。 MySQL(および他のいくつかのデータベース)では二重引用符を使用できますが、標準を使用しない理由はありません。