ОШИБКА 1451 Не удается удалить запись из родительской таблицы

#mysql

#mysql

Вопрос:

Эй, ребята, итак, я пытаюсь удалить запись. Однако не позволяет мне из-за ограничения внешнего ключа

Операция, которую я пытаюсь выполнить (все номера карт являются поддельными)

 DELETE FROM payment_method
WHERE card_no = 42218345;
  

структуры таблиц:

 CREATE TABLE  payment_details  (
   card_no  int(8) NOT NULL,
   customer_id  int(50)  NOT NULL AUTO_INCREMENT,
   CVV  int(3) NOT NULL,
   card_type  ENUM ('Visa', 'Amex', 'American Express', 'Mastercard') NOT NULL,
   expiry_date  DATE NOT NULL,
   PRIMARY KEY(card_no),
   KEY customer_idfk1 (customer_id),
   CONSTRAINT customer_idfk1 FOREIGN KEY (customer_id) REFERENCES customers (customer_id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  

и

 CREATE TABLE  customers  (
   customer_id  int(50)  NOT NULL AUTO_INCREMENT,
   fname  varchar(20) NOT NULL,
   lname  varchar(20) NOT NULL,
   dateOfBirth date NOT NULL,
   address  varchar(30) NOT NULL,
   city  varchar(20) NOT NULL,
   county  ENUM('Armagh','Carlow','Cavan','Clare','Cork','Derry','Donegal','Down','Dublin','Fermanagh','Galway','Kerry','Kildare','Kilkenny','Laois','Leitrim','Limerick','Longford','Louth','Mayo','Meath','Monaghan','Offaly','Roscommon','Sligo','Tipperary','Tyrone','Waterford','Westmeath','Wexford','Wicklow') NOT NULL,
   phone  int(10) NOT NULL,
   email  varchar(20) NOT NULL,
   payment_method  ENUM ('Visa', 'Amex', 'Cash', 'American Express', 'Mastercard') NOT NULL,
   valid_licence varchar(5) NOT NULL,
   status  varchar(10),
   PRIMARY KEY (customer_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  

ошибка:

1451 — Не удается удалить или обновить родительскую строку: сбой ограничения внешнего ключа ( g00337857abu . payment_details , CONSTRAINT customer_idfk1

ССЫЛКИ на ВНЕШНИЙ КЛЮЧ ( customer_id ) customers ( customer_id ))

Кто-нибудь знает, почему это не позволяет мне удалить эту запись..

Я обнаружил 1-ю ошибку

Теперь я пытаюсь удалить из таблицы customers

 DELETE FROM customers
WHERE customer_id = 1
  

ошибка — #1451 — Не удается удалить или обновить родительскую строку: внешний ключ
сбой ограничения ( g00337857abu . payment_details , ОГРАНИЧЕНИЕ
customer_idfk1 ССЫЛКИ НА ВНЕШНИЙ КЛЮЧ ( customer_id ) customers
( customer_id ))

Комментарии:

1. Что payment_method ? Третья таблица?

2. На самом деле я только что заметил это. Нет, это не так. предполагается, что она показывает платеж из payment_details tbl — что вы рекомендуете делать

3. Из какой таблицы вы удаляете?

4. payment_details

5. Посмотрите на свой код.