Mysql
 sql >> база данни >  >> RDS >> Mysql

Дублиран запис „0“ за ключ „PRIMARY“

Това се случва, когато имате първичен ключ, но не му давате стойност за инициализация. Самата вложка причинява дублирането.

Във вашия случай ви идват на ум две възможности:

  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() , освен ако наистина не харесвате много интервали в края на низовете.
  • Добавих уникално име на доставчик към таблицата и декларирах идентификатора като auto_increment .
  • Единичните кавички са стандарт на ANSI за низови константи. MySQL (и някои други бази данни) позволяват двойни кавички, но няма причина да не използвате стандарта.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP mysql търси множество таблици с помощта на ключова дума

  2. Показване на всички таблици в MySQL база данни с помощта на PHP?

  3. Не може правилно да се вмъкнат гръцки знаци в базата данни на mysql

  4. MySQL NULLIF() Обяснено

  5. Как да получите стойността на SQL_CALC_FOUND_ROWS с помощта на подготвени оператори?