Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Duplikat wpisu '0 'dla klucza' PRIMARY'

Dzieje się tak, gdy masz klucz podstawowy, ale nie nadaj mu wartości inicjującej. Sama wstawka powoduje duplikację.

W twoim przypadku przychodzą na myśl dwie możliwości:

  1. supp_id jest kluczem podstawowym i zadeklarowanym jako liczba. Myślę, że w starszych wersjach MySQL wartości ciągu są po cichu konwertowane na liczby. Ponieważ wiodącymi znakami są litery, wartość wynosi 0.

  2. Masz inny id pole będące kluczem podstawowym, ale bez wartości i niezadeklarowanej auto_increment .

EDYCJA:

Podejrzewam, że chcesz następujący kod:

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

Kilka uwag:

  • Zazwyczaj chcesz varchar() zamiast char() , chyba że naprawdę lubisz dużo spacji na końcu ciągów.
  • Dodałem unikalną nazwę dostawcy do tabeli i zadeklarowałem id jako auto_increment .
  • Pojedyncze cudzysłowy to standard ANSI dla stałych łańcuchowych. MySQL (i niektóre inne bazy danych) pozwalają na podwójne cudzysłowy, ale nie ma powodu, aby nie używać standardu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie znaleziono polecenia Mysql w systemie OS X 10.7

  2. Zmiana strefy czasowej połączenia w MySQL

  3. MySQL:zaznaczanie wielu pól w wielu zmiennych w procedurze składowanej

  4. Czy istnieje bezpieczny sposób parametryzacji nazw baz danych w zapytaniach MySQL?

  5. Najlepsza metoda przechowywania listy identyfikatorów użytkowników