sql >> データベース >  >> RDS >> Mysql

キー「PRIMARY」の重複エントリ「0」

    これは、主キーがあるが初期化値を指定していない場合に発生します。インサート自体が重複を引き起こしています。

    あなたの場合、2つの可能性が思い浮かびます:

    1. supp_id は主キーであり、数値として宣言されています。 MySQLの古いバージョンでは、文字列値はサイレントに数値に変換されると思います。先頭の文字が文字であるため、値は0です。

    2. 別の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(および他のいくつかのデータベース)では二重引用符を使用できますが、標準を使用しない理由はありません。


    1. MariaDBでMINUS演算子を使用するときのエラー1064(42000)を修正しました

    2. 優れたデータベース設計、可変数の属性

    3. MySQL ORDERBY[カスタムSETフィールド値]

    4. mysqlユーザー行レベルのアクセス