Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Powiązanie kluczem obcym
Forum PHP.pl > Forum > Bazy danych > MySQL
moraw2008
Witam,

Działam na darmowym koncie na serverze w www.vixo.pl, utoworzyłem tam kilka tabel i mechanizm obsługujący je napisany w PHP. Potrzebuje utowrzyć teraz powiązanie dwóch tabel za pomocą klucza obcego. Przeszperałem w sieci jak to zrobić w przypadku MySql (stacjonarnie działam testowo na MS SQL Serverze i tam jest to proste). Znalazłem wskazówkę:

Cytat
Aby móc korzystać z kluczy obcych w MySQL musisz przede wszystkim podczas tworzenia tabeli ustawić mechanizm składowania danych na InnoDB - bez tego ani rusz. Zazwyczaj domyślnie phpMyAdmin jest tak skonfigurowany, że jako mechanizm składowania dla tabel/bazy wybiera MyISAM. Jeśli już masz tabele utworzone mechanizm składowania dla tabeli można bardzo łatwo zmienić wchodząc w zakładkę Operacje dla danej tabeli w box'ie Opcje tabeli wybierasz sobie mechanizm składowania jako InnoDB. Musisz pamiętać żeby ten mechanizm składowania zadeklarować dla obu tabel których relacja dotyczy.

Drugim elementem który jest pośrednio wymagany to indeksy istniejące w obydwu tabelach. Jeśli relacja ma zachodzić pomiędzy kolumną A w tabeli 1 a kolumną B w tabeli 2 to zarówno kolumna A jak i kolumna B muszą być w całości lub części składowymi indeksu (jednego ale mogą być też kilku) odpowiedniej tabeli.

Jeśli to masz możesz przystąpić do tworzenia relacji pomiędzy kolumnami. Wchodząc na strukturę wybranej tabeli (zakładka Struktura) masz trzy linki: Widok do druku, Widok relacyjny i Znaliza zawartości. Klikając w Widok relacyjny przejdziesz do formularza w którym możesz ustawiać relacje pomiędzy kolumnami zindeksowanymi z wybranej


U mnie nie ma możliwości zmiany mechanizmu składowania dla tabel/bazy z MyISAM na InnoDB, nie ma takiej opcjacji na liście rozwijalnej wyboru mechanizmów składowania w ustawieniach...
Może mi ktoś pomóc?
Pozdrawiam i z góry dzięki.
skowron-line
  1. ALTER TABLE t1 ENGINE = InnoDB;

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
moraw2008
HEj, dzięki za odp.

OD tego zacząłęm już wcześniej kombinowanie.
Wykonałem też i takie polecenie SQL - zostało zaakcpetowane, ale w ustawieniach mechanizm składowania danych nie zmienił sie na InnoDB, widnieje dalej MyISAM.. tak musi zostać?
skowron-line
Powinno Ci pokazać innodb w kolumnie TYPE w PMA.
https://www.activecollab.com/forums/post/2746/ zobacz sobie czy jest włączone innodb
moraw2008
ok, dzięks.
Popatrze po pracy i wrazie co jeszcze dopytam.
Pozdrawiam!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.