Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Problem z utworzeniem tabelki, dwa klucze obce odwolujace sie do jednego pola
zeppastian
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 15.07.2007

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


Witajcie Moi drodzy.

Jestem w trakcie tworzenia swojej pracy inzynierskiej, ktora w calosci oparta bedzie o PHP i MySql. Jestem na etapie zakonczonego projektowania baz i ich tworzenia juz bezposrednio. Mam oto jeden problem, zakladam oczywiscie ze wynika on z mojej niewiedzy. Otóż:

Oto zapytanie ktore ma utworzyc tabelke 'wiadomosci', w jej srodku sa ustawione dwa klucze obce dla pol:
od_kogo --> odwolujaca sie do tabelki uzytkownicy do pola id_uzyt
do_kogo --> odwolujaca sie do tabelki uzytkownicy do pola id_uzyt

  1. CREATE TABLE wiadomosci (
  2. id_wiad INTEGER(255) NOT NULL AUTO_INCREMENT,
  3. temat TINYTEXT(255) NULL,
  4. tresc TEXT(255) NULL,
  5. data_wys DATETIME NULL,
  6. od_kogo INTEGER(255) NOT NULL,
  7. do_kogo INTEGER(255) NOT NULL,
  8. v INTEGER(255) NULL,
  9. PRIMARY KEY(id_wiad),
  10. INDEX wiadomosci_FKIndex1(od_kogo),
  11. INDEX wiadomosci_FKIndex2(do_kogo),
  12. FOREIGN KEY(od_kogo)
  13. REFERENCES uzytkownicy(id_uzyt) ON DELETE NO ACTION ON UPDATE NO ACTION
  14. FOREIGN KEY(do_kogo)
  15. REFERENCES uzytkownicy(id_uzyt) ON DELETE NO ACTION ON UPDATE NO ACTION
  16. )
  17. TYPE=InnoDB;


Oczywiscie jest wysypka

  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(255) NULL,
  2. tresc TEXT(255) NULL,
  3. data_wys DATETIME NULL,
  4. od_kogo INTEG' at line 3


linia 3ecia, hymm, a coz tu moze byc zle, zakladam ze to nie tu jest problem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
nie do konca jestem przekonany czy moge w taki sposob utworzyc klucze jak to zrobilem wyzej. Na zasadzie dwa pola w jednej tabelce do jednego pola w innej tabelce. Z gory dziekuje za pomoc, ew. wskazowki.

pozdr

edit. temat chyba powinienem byl umiescic w dziale dla poczatkujacych (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)

Ten post edytował zeppastian 15.04.2008, 18:28:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Chyba chodzi o to, że zapomniałeś dać przecinka między pierwszym ograniczeniem, a drugim.
  1. FOREIGN KEY(od_kogo)
  2. REFERENCES uzytkownicy(id_uzyt) ON DELETE NO ACTION ON UPDATE NO ACTION
  3. FOREIGN KEY(do_kogo), -- tutaj
  4. REFERENCES uzytkownicy(id_uzyt) ON DELETE NO ACTION ON UPDATE NO ACTION


Edycja.
Przyjrzałem się na nowo i nieźle pomieszałeś: TEXT(255). Daj samo TEXT (chyba na to pole nie daje się ograniczenia). INTEGER(255)? Daj samo INTEGER albo INT(10).

Ten post edytował phpion 15.04.2008, 18:43:35
Go to the top of the page
+Quote Post
zeppastian
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 15.07.2007

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


  1. FOREIGN KEY(od_kogo)
  2. REFERENCES uzytkownicy(id_uzyt) ON DELETE NO ACTION ON UPDATE NO ACTION, -- tutaj
  3. FOREIGN KEY(do_kogo)
  4. REFERENCES uzytkownicy(id_uzyt) ON DELETE NO ACTION ON UPDATE NO ACTION


chyba tak jak utaj wskazalem przecinek powinien byc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
w kazdym razie moj blad, nie bylo go, niestety dalej wysypka, ten sam komunikat (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)






edit:
Jest solucja!

  1. CREATE TABLE wiadomosci (
  2. id_wiad INTEGER(255) NOT NULL AUTO_INCREMENT,
  3. [b] temat TINYTEXT NULL, 1.
  4. tresc TEXT NULL, 2.
  5. data_wys DATETIME NULL, 3.[/b]
  6. od_kogo INTEGER(255) NOT NULL,
  7. do_kogo INTEGER(255) NOT NULL,
  8. v INTEGER(255) NULL,
  9. PRIMARY KEY(id_wiad),
  10. INDEX wiadomosci_FKIndex1(od_kogo),
  11. INDEX wiadomosci_FKIndex2(do_kogo),
  12. FOREIGN KEY(od_kogo)
  13. REFERENCES uzytkownicy(id_uzyt) ON DELETE NO ACTION ON UPDATE NO ACTION,
  14. FOREIGN KEY(do_kogo)
  15. REFERENCES uzytkownicy(id_uzyt) ON DELETE NO ACTION ON UPDATE NO ACTION
  16. )
  17. TYPE=InnoDB;


1. tinytext nie daje sie wielkosci
2. do text jak wspomniales wyzej nie daje sie wielkosci
3. do DATETIME nie daje sie wielkosci

wiedzialem ze to wynika z mojej niewiedzy, jednk co do przecinka to ja mialem racje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Dziekuje bardzo za pomoc i oby Twoje problemy takze tak szybko sie rozwiazywaly (IMG:http://forum.php.pl/style_emoticons/default/party.gif)

Ten post edytował zeppastian 15.04.2008, 18:56:12
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(zeppastian @ 15.04.2008, 19:47:11 ) *
jednk co do przecinka to ja mialem racje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Hehe, no machnąłem się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) aczkolwiek! może to była specjalnie zastawiona pułapka abyś sam znalazł dobre rozwiązanie (jak to zrobić opisałem dobrze, machnąłem się tylko w umiejscowieniu przecinka w kodzie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ).
Go to the top of the page
+Quote Post
zeppastian
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 15.07.2007

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


Cytat(phpion @ 15.04.2008, 19:59:51 ) *
Hehe, no machnąłem się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) aczkolwiek! może to była specjalnie zastawiona pułapka abyś sam znalazł dobre rozwiązanie (jak to zrobić opisałem dobrze, machnąłem się tylko w umiejscowieniu przecinka w kodzie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ).


ano slusznie!, dzieki jeszcze raz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozdr666!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 13:28