/ / Błąd ograniczenia klucza obcego MY SQL - mysql

Błąd ograniczenia klucza obcego SQL - mysql

Używam bazy danych MySQL jako zaplecza dla mojegopodanie. Grałem z bazą danych i zrobiłem coś złego kilka dni temu, a teraz nie mogę zastosować klucza obcego na mojej tablicy DB. Mam 2 shoplocation i pizaorderdetail. W pizzaordrdetail przekazuję id z shoplocation jako klucz obcy. I otrzymuję następujący błąd. Tabela zawiera już dane w niej zawarte. A wcześniej miałem ograniczenie klucza obcego dostępne na pizzaorderdetail, ale jakoś go usunięto. Pomóż mi rozwiązać ten błąd.

Wykonywanie: ALTER TABLE order.pizzaorderdetail DODAJ INDEKS FK_idx (LocationID ASC); ALTER TABLE order.pizzaorderdetail DODAJ KONSTRAKT FK ZAGRANICZNY KLUCZ (LocationID) REFERENCJE order.location (id) W PRZYPADKU USUŃ BRAK DZIAŁANIA W AKTUALIZACJI NIE DZIAŁA;

Operacja nie powiodła się: Wystąpił błąd podczas stosowania skryptu SQL do bazy danych. BŁĄD 1452: Nie można dodać lub zaktualizować wiersza podrzędnego: nie powiodło się ograniczenie klucza obcego (order.#sql-714_31, CONSTRAINT FK ZAGRANICZNY KLUCZ (LocationID) REFERENCJE location (id) W PRZYPADKU USUŃ BRAK DZIAŁANIA NA AKTUALIZACJI BEZ AKCJI) Instrukcja SQL: ALTER TABLE order.pizzaorderdetail DODAJ KONSTRAKT FK ZAGRANICZNY KLUCZ (LocationID) REFERENCJE order.location (id) W PRZYPADKU USUŃ BRAK DZIAŁANIA O AKTUALIZACJI NIE DZIAŁA

Odpowiedzi:

0 dla odpowiedzi № 1

Musisz sprawdzić, czy twój FK jest w porządku. Kiedy otrzymałem tę wiadomość, właśnie usunąłem moje FK i zostało to rozwiązane.

Zgodnie z instrukcją: https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html

InnoDB zgłasza ten błąd podczas próby usunięcia ostatniego indeksu może wymuszać określone ograniczenie referencyjne.

Aby uzyskać optymalną wydajność przy użyciu instrukcji DML,InnoDB wymaga indeksu istnieć w kolumnach kluczy obcych, tak aby operacje UPDATE i DELETE na tabeli nadrzędnej można łatwo sprawdzić, czy istnieją odpowiednie wiersze stolik pod dzieci. MySQL automatycznie tworzy lub upuszcza takie indeksy w razie potrzeby, jako efekt uboczny CREATE TABLE, CREATE INDEX i ALTER Instrukcje TABLE.

Kiedy upuszczasz indeks, InnoDB sprawdza, czyindeks jest używany dla sprawdzanie ograniczenia klucza obcego. Nadal można zrzucić indeks, jeśli istnieje inny indeks, którego można użyć do wymuszenia tego samego przymus. InnoDB zapobiega upuszczeniu ostatniego indeksu, który może wymuszenie określonego ograniczenia referencyjnego.