Więc próbuję dodać klucz podstawowy do jednej z tabel w mojej bazie danych. W tej chwili ma taki klucz podstawowy:
PRIMARY KEY (user_id, round_number)
Gdzie user_id to klucz obcy.
Próbuję to zmienić na to:
PRIMARY KEY (user_id, round_number, created_at)
Robię to w phpmyadmin, klikając ikonę klucza podstawowego w widoku struktury tabeli.
Oto błąd, który otrzymuję:
#1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150)
Jest to baza danych MySQL z silnikiem tabel InnoDB.
mysql
sql
phpmyadmin
innodb
mysql-error-1025
Richard Knop
źródło
źródło
Odpowiedzi:
Prawdopodobnie istnieje inna tabela z kluczem obcym odwołującym się do klucza podstawowego, który próbujesz zmienić.
Aby dowiedzieć się, która tabela spowodowała błąd, możesz uruchomić,
SHOW ENGINE INNODB STATUS
a następnie przejrzećLATEST FOREIGN KEY ERROR
sekcję.źródło
Jak zostało powiedziane, musisz wcześniej usunąć FK. Na MySQL zrób to w ten sposób:
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`; ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
źródło
Dla tych, którzy dostają się do tego pytania przez Google ... ten błąd może się również zdarzyć, jeśli spróbujesz zmienić nazwę pola, które działa jako klucz obcy.
źródło
Aby ominąć to w PHPMyAdmin lub w MySQL, najpierw usuń ograniczenie klucza obcego przed zmianą nazwy atrybutu.
(Dla użytkowników PHPMyAdmin: Aby usunąć ograniczenia FK w PHPMyAdmin, wybierz atrybut, a następnie kliknij „widok relacji” obok „widoku wydruku” na pasku narzędzi poniżej struktury tabeli)
źródło
Jeśli próbujesz usunąć kolumnę, która jest KLUCZEM OBCYM, musisz znaleźć poprawną nazwę, która nie jest nazwą kolumny. Np .: Jeśli próbuję usunąć pole serwera w tabeli Alarmy, które jest kluczem obcym do tabeli serwerów.
SHOW CREATE TABLE alarm;
PoszukajCONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`)
linii.ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
ALTER TABLE `alarm` DROP `server_id`
Spowoduje to usunięcie serwera kluczy obcych z tabeli Alarmy.
źródło
Miałem ten problem, dotyczy klucza obcego
Kliknij
Relation View
(jak na poniższym obrazku), a następnie znajdź nazwę pola, które zamierzasz usunąć, a podForeign key constraint (INNODB)
kolumną po prostu ustaw zaznaczenie na nic! Oznacza brak klucza obcegoMam nadzieję, że to zadziała!
źródło
Jeśli dodajesz klucz obcy i napotkasz ten błąd, może to oznaczać, że wartość z tabeli podrzędnej nie występuje w tabeli nadrzędnej.
Powiedzmy, że kolumna, do której ma zostać dodany klucz obcy, ma wszystkie wartości ustawione na 0, a wartość nie jest dostępna w tabeli, do której się odwołujesz.
Możesz ustawić jakąś wartość, która jest obecna w tabeli nadrzędnej, a następnie dodanie klucza obcego zadziałało dla mnie.
źródło