Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: InnoDB, klucze obce, kopia bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
qrcze_pieczone
Witam
mam skrypt którym kopiuje bazę do pliku i do tworzenia struktury danej tabeli w bazie wykorzystuję polecenie
  1. SHOW CREATE TABLE inwestycja_budynki

co daje taki wynik
  1. CREATE TABLE `inwestycja_budynki` ( `id_budynki` int(25) NOT NULL AUTO_INCREMENT, `id_etapy` int(20) NOT NULL, `nazwa_budynku` varchar(100) collate utf8_polish_ci NOT NULL, `miasto_budynki` varchar(25) collate utf8_polish_ci NOT NULL, `ulica_budynki` varchar(200) collate utf8_polish_ci NOT NULL, `robocza_budynki` varchar(50) collate utf8_polish_ci NOT NULL, PRIMARY KEY (`id_budynki`), KEY `id_etapy` (`id_etapy`),
  2. CONSTRAINT `inwestycja_budynki_ibfk_1` FOREIGN KEY (`id_etapy`) REFERENCES `inwestycja_etapy` (`id_etapy`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

na czym polega problem,
jak na pewno zauważyliście mechanizm składowania jest typu InnoDB i w bazie są zdefiniowane klucze obce
i teraz aby przywrócić bazę z pliku muszę ręcznie usuwać wpis o deklaracji kluczy obcych w każdej tabeli w tym przypadku

  1. CONSTRAINT `inwestycja_budynki_ibfk_1` FOREIGN KEY (`id_etapy`) REFERENCES `inwestycja_etapy` (`id_etapy`) ON UPDATE CASCADE


jak jest dużo danych i tabel jest ponad 30 jest to męczące i pracochłonne

moje pytanie jest takie,
czy jest możliwość aby wyłuskać dane o danej tabel inną metodą niż "show create table" tak aby nie było deklaracji kluczy obcych w wyniku końcowym

jak zwykle z góry wielkie dzięki za podpowiedz
pozdrawiam
nospor
wystarczy ze wyłączysz sprawdzanie kluczy obcych, a po utworzeniu bazy je spowrotem wlaczysz:
  1. SET FOREIGN_KEY_CHECKS=0;
  2.  
  3. ....
  4. twoje zapytania tworzace tabele
  5. ....
  6.  
  7. SET FOREIGN_KEY_CHECKS=1;
qrcze_pieczone
dzięki nospor smile.gif
a jeszcze ciągnąc temat wiesz może jak wyciągnąć z tabeli samą deklarację klucza obcego czyli

CONSTRAINT `inwestycja_budynki_ibfk_1` FOREIGN KEY (`id_etapy`) REFERENCES `inwestycja_etapy` (`id_etapy`) ON UPDATE CASCADE

generlanie mogę dodać na końcu skryptu deklarację kluczy obcych ale przypuszczam że to tez można w jakiś prosty sposób wyciągnąć z tabeli

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.