/ / МОЖЛИВІСТЬ ЗБІЛЬШЕННЯ ВНУТРІШНЬОГО КЛІЄНТУ SQL

Помилка обмеження зовнішнього ключа MY SQL - mysql

Я використовую базу даних MySQL як задній кінець для могозаявка Я грав з базою даних, і я зробив щось неправильно пару днів тому, і тепер я не можу застосувати зовнішній ключ у моєму таблиці БД. У мене є 2 таблиці магазина місцевості та pizaorderdetail. У pizzaordrdetail я передаю id з shoplocation як зовнішній ключ. І я отримую наступну помилку. У таблиці вже містяться дані в ньому. І раніше у мене було зовнішнє обмеження ключа, доступне в pizzaorderdetail, але якось його видалено. Будь-ласка, допоможіть мені вирішити цю помилку.

Виконання: ALTER TABLE order.pizzaorderdetail ДОДАТИ ІНДЕКС FK_idx (LocationID ASC); ALTER TABLE order.pizzaorderdetail ДОДАЙТЕ ДЕПУТАТИ FK ЗОВНІШНІЙ КЛЮЧ (LocationID) ПОСИЛАННЯ order.location (id) ВИДАЛИТИ НЕ ДІЙ НА ПОВЕРНУТИ НЕ ДІЙ;

Операція не виконана: під час застосування сценарію SQL до бази даних виникла помилка. ПОМИЛКА 1452: неможливо додати або оновити дочірній рядок: обмеження зовнішнього ключа неможливе (order.#sql-714_31, CONSTRAINT FK ЗОВНІШНІЙ КЛЮЧ (LocationID) СПИСОК ЛІТЕРАТУРИ location (id) НА ВИДАЛЕННЯ НЕ ДІЇ ДО НОВИНКИ НЕ ДІЙ) Заява SQL: ALTER TABLE order.pizzaorderdetail ДОДАЙТЕ ДЕПУТАТИ FK ЗОВНІШНІЙ КЛЮЧ (LocationID) ПОСИЛАННЯ order.location (id) ВИДАЛИТИ НЕ ДІЙ НА ПОВЕРНУТИ НЕ ДІЙ

Відповіді:

0 для відповіді № 1

Ви повинні перевірити, чи є ваша FK в порядку. Коли я отримав це повідомлення, я просто видалив свої FK, і це було вирішено.

Згідно з інструкцією: https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html

InnoDB повідомляє про цю помилку, коли ви намагаєтесь скинути останній індекс може запровадити певний референтний обмеження.

Для оптимальної роботи з твердженнями DML,InnoDB вимагає індексування існувати на колонках зовнішніх ключів, щоб виконувати UPDATE і DELETE операції на батьківському стільці може легко перевірити наявність відповідних рядків у дитячий стіл. MySQL автоматично створює або скидає такі показники коли це необхідно, як побічний ефект CREATE TABLE, CREATE INDEX та ALTER ТАБЛИЦЯ твердження.

Коли ви скидаєте індекс, InnoDB перевіряє, чи єіндекс використовується для перевірка зовнішнього обмеження ключа. До цих пір OK, щоб опустити індекс, якщо є інший індекс, який може бути використаний для забезпечення того ж самого права обмеження InnoDB не дозволяє вам скидати останній індекс, який може дотримання певного референційного обмеження.