![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%) ![]() ![]() |
majac takie tabele :
otrzymuje taki komunikat: Cytat Błąd zapytanie SQL : CREATE TABLE `blood` ( `parentID` int( 10 ) unsigned NOT NULL , `childID` int( 10 ) unsigned NOT NULL , INDEX ( `parentID` , `childID` ) , FOREIGN KEY ( `parentID` ) REFERENCES nodes( `nodeID` ) , FOREIGN KEY ( `childID` ) REFERENCES nodes( `nodeID` ) ) TYPE = InnoDB MySQL zwrócił komunikat: #1005 - Can't create table './test2/blood.frm' (errno: 150) nie wiem co tam poprawic, ktos ma jakis pomysl? -------------------- Jeśli życie to kara to nieźle nabroiłem ;-)
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W mysql chyba nie ma obcych kluczy.
A co do bledu sprawdz uprawnienia mysqla do katalogu data. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 22.04.2004 Skąd: Żoliborz Ostrzeżenie: (0%) ![]() ![]() |
spenalzo -> mylisz sie
squid ->dodaj index do nodes.nodeID aaa... i pole childID nie powinno byc chyba kluczem obcym -------------------- Visual Basic - kto by pomyślał :)
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ano faktycznie, przyznaje sie do błedu, nie zauważyłęm że jest tam typ InnoDB
![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%) ![]() ![]() |
Cytat(spenalzo @ 2004-10-20 23:34:12) Ano faktycznie, przyznaje sie do błedu, nie zauważyłęm że jest tam typ InnoDB ![]() i to od bardzo dawna ![]() co do childID to musi byc kluczem obcym tak samo jak parentID jesli chodzi o indeks dla nodes.nodeID to wiem iz musi byc zalozny kiedy uzywam kluczy obcych ale zauwazcie ze ustawieml
a to automatycznie powoduje powstanie indeksu dla atrybutu/kolumny nodeID tak samo jak aotomatycznie przypisywany jest NOT NULL spradze jeszcze te prawa do katalogu ale nie wietrze powodzenia (inne tabele dodaje ok) Ten post edytował squid 23.10.2004, 22:38:13 -------------------- Jeśli życie to kara to nieźle nabroiłem ;-)
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) ![]() ![]() |
Hej.
Jaka masz wersje MySQL-a, bo w starszych wersjach tworzac tabele typu InnoDB i uzywajac kluczy obcych byly problemy ze skladnia wlasnie przy definiowaniu stuktury tabeli(chyba brak spacji przed FOREIGN. Ale zastanawia mnie fakt ze tworzysz w drugiej tabeli dwa klucze ktore sa referncja do jednego klucza z pierwszej tabeli - nie wiem czy taki zapis jest wogole dopuszczalny - ale wydaje mi sie ze to on powoduje problem. pozdrawiam anas |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%) ![]() ![]() |
Cytat(anas @ 2004-10-24 15:23:04) Hej. Jaka masz wersje MySQL-a, bo w starszych wersjach tworzac tabele typu InnoDB i uzywajac kluczy obcych byly problemy ze skladnia wlasnie przy definiowaniu stuktury tabeli(chyba brak spacji przed FOREIGN. Ale zastanawia mnie fakt ze tworzysz w drugiej tabeli dwa klucze ktore sa referncja do jednego klucza z pierwszej tabeli - nie wiem czy taki zapis jest wogole dopuszczalny - ale wydaje mi sie ze to on powoduje problem. pozdrawiam anas wersja 4.0.2 chyba w wersjach 3 trzeba bylo zaminic plik serwera i mozna bylo sie bawic w InnoDB. Czy bledem mzoe byc to ze dwa klucze obce odwoluja sie do tej samej kolumny w innej dameli? mozliwe aczkolwiek nie wiem jak inaczej powiazac ze soba dwa obiekty tego samego typu, w kazdym razie jak jeden z kluczy obcych usuwam to mam ten sam blad ![]() -------------------- Jeśli życie to kara to nieźle nabroiłem ;-)
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) ![]() ![]() |
Hej.
U mnie po usunieciu jednego z kluczy obcych tabela zalozyla sie poprawnie, tez robilem ostatnio cos takiego, ale poprostu zalozylem tabele ktora przechowywala dwa klucze nie powiazane jawna relacja. Musi to byc w taki sposob zrobione - bedziesz uzywal transakcji badz polecen ON DELETE lub ON UPDATE - bo jesli nie - to mozesz zrobic jak zaproponowalem. pozdrawiam anas // EDIT Hej ponownie... walczac z wlasnymi problemami przypadkowo trafilem na takie cos na stronach domowych DBDesigner-a: BUG ktory powodowal blad o numerze 150 Ten post edytował anas 25.10.2004, 11:36:06 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%) ![]() ![]() |
sek w tym ze wolabym to tak zrobic bo transakcje raczej beda ale moglbys mi kode przyblizyc swoje rozwiazanie
-------------------- Jeśli życie to kara to nieźle nabroiłem ;-)
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) ![]() ![]() |
Hej.
Ostatnio musialem sprostac podobnemu wyzwaniu jak Ty - wiec podziele sie w jaki sposob udalo mi sie to zrobic: Tabela Produkty:
Teraz tak - aby bylo prosciej nie patrz na nic w tej tabeli, oprocz klucza ProduktID - jak widzisz jest zdefiniowany jako Primary Key, ale nie jako jedyny - rowniez jako Primary Key zdefiniowane sa klucze obce StawkaID oraz GrupaID - wiec aby mogl zrobic relacje ktora dziedziczy mi tylko jeden klucz i identyfikuje po nim ustawiam to pole jako UNIQUE - pod polem opis znajduje sie to ustawienie. Ustawiam indexy itd... i teraz druga tabela w ktorej bede trzymal powiazania:
Jak widzisz sa zrobione dwie relacje - i dwa rozne indexy zalozone na klucze obce - nastepnie definicje tych relacji i co w przypadku kiedy zostanie skasowany rodzic - akurat CASCADE oznacza ze zostana rowniez skasowane wszystkie wiersze posiadajace klucz rodzica. Nazewnistwo index'ow i niektorych pol moze wydawac sie dziwne - ale to jest wygenerowane prosto z narzedzia do projektowania baz i nie zdazylem jeszcze poprawic, bo projekt nadal jest na tapecie ![]() ![]() pozdrowka anas |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%) ![]() ![]() |
No dzieki wielkie!!
zrobilem na podstwaie tego co mi dales tak :
i dziala. Pytania: 1. Jesli usune indeksy to juz nie dziala ![]() ![]() 2. co znaczy :
znaczy wiem ze podczas kasowania i uaktulaniania sprawdzane jest czy istnieje wogole taki nodeID jego powiazania itp. ale czy bez tego dzialaloby inaczej? 3. kontrola integralnosc i kluczy na poziomie bazy danych to naprawde fajna sprawa tylko czy ktos testowal kto zrobi to szybciej baza czy skrypt? obstawiam baze ale moge sie mylic 4. Co z przenosnoscia takiego kodu? postgre tez by cos takiego dzialalo? z gory dzieki za odpowiedz Ten post edytował squid 31.10.2004, 17:33:42 -------------------- Jeśli życie to kara to nieźle nabroiłem ;-)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 20:32 |