/ / Klucz obcy MySQL, Cant utworzyć tabelę (errno: 150) - mysql, klucze obce, mysql-error-150

Klucz obcy MySQL, Cant utworzyć tabelę (errno: 150) - mysql, klucze obce, mysql-error-150

Próbuję zbudować bazę danych i tabele dlamój system. Ale znalazłem, że jeśli nie dodaję klucza obcego w kodach, nie ma błędu. "Użyłem wielu metod, aby kod zadziałał, ale nadal jest błąd.

Create table if not exists users_details_one
(
fname varchar(255),
lname varchar(255),
address varchar(255),
users_email varchar(255),
users_password varchar(255),
department varchar(255)
);

Create table if not exists users_one
(
users_email varchar(255),
users_password varchar(255) ,

FOREIGN KEY (users_email) REFERENCES users_details_one(users_email),

FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
);

Odpowiedzi:

1 dla odpowiedzi № 1

W twoim kluczu zagranicznym jest literówka:
FOREIGN KEY (users_password) REFERENCES users_details_one(users_spassword) powinno być FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)

i potrzebujesz również indeksów users_email i users_password w tabeli users_details_one, tak jak to:

Create table if not exists users_details_one
(
fname varchar(255),
lname varchar(255),
address varchar(255),
users_email varchar(255),
users_password varchar(255),
department varchar(255),
index (users_email),
index (users_password)
);

Create table if not exists users_one
(
users_email varchar(255),
users_password varchar(255) ,

FOREIGN KEY (users_email) REFERENCES users_details_one(users_email),

FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
);

Indeks nie musi być unikalny.

z instrukcji

MySQL wymaga indeksów dla kluczy obcych iprzywoływane klucze tak, że Klucze obcego klucza mogą być szybkie i nie wymagają skanowania tabeli. w tabela odwołań, musi istnieć indeks, w którym klucz obcy kolumny są wyświetlane jako pierwsze kolumny w tej samej kolejności. Taki Indeks jest tworzony automatycznie w tabeli odniesienia, jeśli nie jest istnieć.


0 dla odpowiedzi nr 2

Jeśli chcesz utworzyć kolumnę jako klucz obcy,te kolumny muszą być kluczami podstawowymi aur muszą mieć ograniczenie wyjątkowości, tzn. w twoim przypadku hasło user_email i hasła_użytkownika user_details_one musi być unikalne lub klucze podstawowe.