• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

MySQL,ERROR 1215 (HY000): Cannot add foreign key constraint

VPS Starter Arubacloud
0 głosów
417 wizyt
pytanie zadane 1 stycznia 2021 w SQL, bazy danych przez NukaNuka56 Obywatel (1,080 p.)

Hej,

Mam problem, ponieważ nie mogę zrobić tabeli z następującymi danymi:

use mysql;
create database pracownicy;
use pracownicy;
create table zatrudnienie (pesel varchar(11),data_rozp date not null,data_zak date,zarobek float,rodzinne bool,opinia text,id_dzial_stanow int,foreign key (id_dzial_stanow)references dzialy_stanow(id_dzial_stanow),foreign key(pesel) references pracownicy(pesel),primary key(pesel,data_rozp));
create table pracownicy(pesel varchar(11),imie varchar(20) not null,nazwisko varchar(25) not null,data_ur date not null,plec enum('k','m') not null default 'k',kod_poczt varchar(6) not null,foreign key (kod_poczt) references miejscowosci(kod_poczt),primary key(pesel));
create table miejscowosci (kod_poczt varchar(6) not null,miejscowosc varchar(20) not null); 
create table dzialy_stanow (id_dzial_stanow int,nazwa_dzialu varchar(30) not null,nazwa_stanow varchar(30) not null,primary key(id_dzial_stanow));

Gdy próbuje dodać tabelę zatrudnienie i pracownicy wyskakuje błąd:

ERROR 1215 (HY000): Cannot add foreign key constraint 

Nie wiem czy to zależy od kolejności dodawania tych tabel czy od innego problemu.

Proszę o pomoc

Pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 1 stycznia 2021 przez SzkolnyAdmin Szeryf (86,280 p.)
wybrane 2 stycznia 2021 przez NukaNuka56
 
Najlepsza

SQL jest językiem skryptowym i instrukcje wykonują się kolejno.

1. W tabeli zatrudnienie zmień typ bool na varchar(1) lub char(1) - serwer MySQL/MariaDB nie obsługuje tego typu.

2. W tabeli miejscowości zapomniałeś o kluczu podstawowym - dodaj definicję podczas definiowania tabli lub zmień to później:

alter table miejscowosci add primary key(kod_poczt);

3. Wyrzuć z definicji tabel definiowanie kluczy obcych i na końcu dodaj:

alter table zatrudnienie add foreign key (id_dzial_stanow) references dzialy_stanow(id_dzial_stanow);
alter table zatrudnienie add foreign key(pesel) references pracownicy(pesel);
alter table pracownicy add foreign key(kod_poczt) references miejscowosci(kod_poczt);

Działa.

komentarz 2 stycznia 2021 przez NukaNuka56 Obywatel (1,080 p.)
Dziękuje za pomoc, działa i Pozdrawiam

Podobne pytania

0 głosów
1 odpowiedź 3,119 wizyt
0 głosów
1 odpowiedź 262 wizyt
pytanie zadane 29 marca 2022 w PHP przez czlowiekmpp Początkujący (300 p.)
0 głosów
0 odpowiedzi 294 wizyt
pytanie zadane 18 marca 2020 w SQL, bazy danych przez ogrod0707 Początkujący (480 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...