Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MySQL Administrator "relacja-klucz obcy"
ernest210
post 27.07.2005, 11:25:47
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 27.07.2005

Ostrzeżenie: (0%)
-----


Mam takie pytanie zainstalowałem sobie „mysql-4.1.13-win32” (działa spoko) i jeszcze „MySQL Administrator” (także działa dobrze). Mam tylko taki oto problem przy tworzeniu relacji a konkretniej chodzi o klucz obcy. Przykład tworzę dwie tabele z następującymi polami:
Tabela: „student” pola: „id”, „imie”, „nazwisko”. „id” jest kluczem głównym.
Tabela2: „egzaminy” pola: „id”, „nazwa-egz”, „miejsce”, „id_studenata”. „id” klucz główny „id_studenta” klucz obcy z tabeli „student”.

A więc gdy mam już dwie tabelę przechodzę do tabeli „egzaminy (podwójne szybkie klikniecie na nazwie tabeli). Aby zrobić relacje domyślam się, że powinno wyglądać to następująco: Przechodzę do dolnej środkowej zakładce „Foreign Keys” naciskam znak plus, wpisuję nazwę (lub zostawiam tą zaproponowaną) „FK_egzaminy_1”. W polu „Foreign Key Settings”, z „Ref. Table” wybieram „student” w opcji „columns” wybieram „id_student” natomiast opcji „Reference Column” wybieram „id”. I powiecmy, że w „On Detale” wybiorę „Cascade” naciskam przycisk „Appy Changes” pojawia się okienko z potwierdzeniem

“Are you sure you want to execute the following SQL command to apply the chenges to the table?”

ALTER TABLE `baza`.`egzaminy` ADD CONSTRAINT `FK_egzaminy_1` FOREIGN KEY `FK_egzaminy_1` (`id_studenta`)
REFERENCES `student` (`id`)
ON DELETE CASCADE
ON UPDATE RESTRICT;


Naciskam „Execute”
Niestety pojawia się taki oto komunikat:

Terror Chile executing query.

ALTER TABLE `baza`.`egzaminy` ADD CONSTRAINT `FK_egzaminy_1` FOREIGN KEY `FK_egzaminy_1` (`id_studenta`)
REFERENCES `student` (`id`)
ON DELETE CASCADE
ON UPDATE RESTRICT;

MySQL Error Number 1005
Can’t create table ’.\baza\#sql-500_7a.frm’(error: 150)


=====================================================
Już sobie poradziłem (głupia pomyłka) po prostu wartość pola dla klucza obcego była ustawiona na Varchar natomiast klucz obcy był typu INTEGER i stąd ten błąd. Dla usprawiedliwienia dodam, że to pierwszy tego typu program, jaki używam, (nie wspominając o MsAccess). Temat można skasować smile.gif.

Ten post edytował ernest210 27.07.2005, 11:49:28
Go to the top of the page
+Quote Post
kwiateusz
post 27.07.2005, 22:29:52
Post #2


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




na przyszlosc wzelkie zapytania dawaj w formie
Kod
[SQL]kod sql [/SQL]
Go to the top of the page
+Quote Post
KRIS_PL
post 29.07.2005, 09:04:13
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 29.07.2005

Ostrzeżenie: (0%)
-----


mam to samo - prawie, naciskam execute i nic, zero błędów klucz się nie tworzy - tabele standardowe MyISAM, pola int (3) w tym jedno z nich jest autoincrement.

sad.gif
Go to the top of the page
+Quote Post
mhs
post 29.07.2005, 09:19:21
Post #4





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


Cytat(KRIS_PL @ 2005-07-29 10:04:13)
mam to samo - prawie, naciskam execute i nic, zero błędów klucz się nie tworzy - tabele standardowe MyISAM, pola int (3) w tym jedno z nich jest autoincrement.

sad.gif

tabele musza byc typu InnoDB a pola na ktore zakladane sa klucze obce musza byc indeksowane - byc moze w tym jest przyczyna
Go to the top of the page
+Quote Post
KRIS_PL
post 29.07.2005, 10:32:18
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 29.07.2005

Ostrzeżenie: (0%)
-----


zrobiłem tak - dalej mam błąd 150 sad.gif
Go to the top of the page
+Quote Post
mhs
post 29.07.2005, 12:15:07
Post #6





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


mozesz podac strukture bazy danych oraz zapytania tworzace relacje gdyz prawdopodobnie masz gdzies blad przy tworzenie relacji....
Go to the top of the page
+Quote Post
KRIS_PL
post 29.07.2005, 14:36:29
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 29.07.2005

Ostrzeżenie: (0%)
-----


Cytat(mhs @ 2005-07-29 11:15:07)
mozesz podac strukture bazy danych oraz zapytania tworzace relacje gdyz prawdopodobnie masz gdzies blad przy tworzenie relacji....

jak się zalogowałem przez najnowszy phpMyAdmin to mi wyświetlił że,
PMA Database ... błąd[ Dokumentacja ]
Ogólne funkcje relacyjne wyłączone

mam serwer w wersji 3 teraz robie upgrade do 4.. coś tam - może tamta wersja nie obsługiwała relacji..
Go to the top of the page
+Quote Post
mhs
post 29.07.2005, 14:38:51
Post #8





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


po Twoim poscie wnioskuje, ze raczej na pewno nie masz dla tabel typu InnoDB dla ktorych tworzysz relacje
Go to the top of the page
+Quote Post
KRIS_PL
post 1.08.2005, 09:46:47
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 29.07.2005

Ostrzeżenie: (0%)
-----


Cytat(mhs @ 2005-07-29 13:38:51)
po Twoim poscie wnioskuje, ze raczej na pewno nie masz dla tabel typu InnoDB dla ktorych tworzysz relacje

błąd nie występuje w wersji serwera 4.1.12a - wszystko działa dobrze za to w wersji 4.0.18 dzieją sie jakieś krzaki w momencie zakładania tabeli innodb wywala błąd, jak zmieni się rodzaj tabeli z myisam na innodb to jeden soft pokazuje że tabela jest innodb następny że myisam.. kosmos, zmieniłem serwer na 4.1.12a i jest ok (mówię tu o wersjach pod windows), w wersji 3.23.58 pod linuxem dostaje przy próbie założenia tabeli InnoDB taki błąd CLICK

Ten post edytował KRIS_PL 1.08.2005, 09:52:00
Go to the top of the page
+Quote Post
mhs
post 1.08.2005, 10:07:35
Post #10





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


mozesz pokazac kod sql?

byc moze na 4.0.x masz uruchomiony inny serwer (a, o ile sie nie myle to nie wszystkie serwery obsluguja inndb)

bledu nie widze, link nie dziala
Go to the top of the page
+Quote Post
KRIS_PL
post 1.08.2005, 10:28:02
Post #11





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 29.07.2005

Ostrzeżenie: (0%)
-----


Cytat(mhs @ 2005-08-01 09:07:35)
mozesz pokazac kod sql?

byc moze na 4.0.x masz uruchomiony inny serwer (a, o ile sie nie myle to nie wszystkie serwery obsluguja inndb)

bledu nie widze, link nie dziala

link działa - może chwilowo coś było nie tak masz tu w innym miejscu http://214kris.w.interia.pl/error1046.JPG
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.07.2025 - 16:55