Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> InnoDB, klucze obce, kopia bazy
qrcze_pieczone
post 7.01.2009, 14:47:48
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 2
Dołączył: 13.04.2007

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


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

Ten post edytował qrcze_pieczone 7.01.2009, 14:49:02
Go to the top of the page
+Quote Post
nospor
post 7.01.2009, 14:54:00
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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;


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
qrcze_pieczone
post 7.01.2009, 15:15:42
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 2
Dołączył: 13.04.2007

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


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
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: 14.08.2025 - 13:28