Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z kluczem obcym, errno: 150
f4ll3ns3raf1n
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.11.2009

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


panowie, mam problem, utworzylem tabele place, w ktorej category_tree_id ma byc kluczem obcym do tabeli category_tree.id.
o ile inne kolumny, ktore byly kluczami obcymi innych tabel chodzily bez najmniejszego problemu, tutaj nie moge tego rozgryzc...
(IMG:http://ml0dy.linuxpl.com/images/01.jpg)
typy obu kolumn takie same, a ciagle ten sam problem...
nic mi gogelki nie podpowiedziały, dlatego prosze dośw. userów baz danych o pomoc :-/
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




pewnie się typy nie zgadzają. Pokaz dokladnie strukturę obu tabel
Go to the top of the page
+Quote Post
f4ll3ns3raf1n
post
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.11.2009

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


  1. CREATE TABLE IF NOT EXISTS `pgarnek_bm_database`.`category_tree` (
  2. `id` BIGINT NOT NULL AUTO_INCREMENT ,
  3. `parent_id` BIGINT NULL DEFAULT NULL ,
  4. `name` VARCHAR(128) NOT NULL ,
  5. PRIMARY KEY (`id`) ,
  6. UNIQUE INDEX `id` (`id` ASC) ,
  7. INDEX `parent_id` (`parent_id` ASC) ,
  8. CONSTRAINT `category_tree_ibfk_1`
  9. FOREIGN KEY (`parent_id` )
  10. REFERENCES `pgarnek_bm_database`.`category_tree` (`id` )
  11. ON DELETE CASCADE)
  12. ENGINE = InnoDB
  13. AUTO_INCREMENT = 25
  14. DEFAULT CHARACTER SET = utf8
  15. COLLATE = utf8_general_ci


  1. CREATE TABLE IF NOT EXISTS `pgarnek_bm_database`.`place` (
  2. `place_id` INT NOT NULL AUTO_INCREMENT ,
  3. `place_name` VARCHAR(50) NOT NULL ,
  4. `description` TEXT NULL ,
  5. `content` TEXT NULL ,
  6. `keywords` VARCHAR(320) NOT NULL ,
  7. `category_tree_id` BIGINT NOT NULL ,
  8. `street_id` INT NOT NULL ,
  9. `adress_numeric` SMALLINT(6) NOT NULL ,
  10. `map_latitude` FLOAT NULL ,
  11. `map_longitude` FLOAT NULL ,
  12. `phone_no` BIGINT NULL ,
  13. `mobile` BIGINT NULL ,
  14. `rating` DOUBLE NULL ,
  15. `ratings_ammount` INT NULL ,
  16. `place_status` TINYINT NULL ,
  17. `recomended` TINYINT(1) NULL ,
  18. `client_id` INT NULL ,
  19. PRIMARY KEY (`place_id`) ,
  20. INDEX `fk_place_client1` (`client_id` ASC) ,
  21. INDEX `fk_place_street1` (`street_id` ASC) ,
  22. INDEX `fk_place_category_tree1` (`category_tree_id` ASC) ,
  23. CONSTRAINT `fk_place_client1`
  24. FOREIGN KEY (`client_id` )
  25. REFERENCES `pgarnek_bm_database`.`client` (`client_id` )
  26. ON DELETE NO ACTION
  27. ON UPDATE NO ACTION,
  28. CONSTRAINT `fk_place_street1`
  29. FOREIGN KEY (`street_id` )
  30. REFERENCES `pgarnek_bm_database`.`street` (`street_id` )
  31. ON DELETE NO ACTION
  32. ON UPDATE NO ACTION,
  33. CONSTRAINT `fk_place_category_tree1`
  34. FOREIGN KEY (`category_tree_id` )
  35. REFERENCES `pgarnek_bm_database`.`category_tree` (`id` )
  36. ON DELETE NO ACTION
  37. ON UPDATE NO ACTION)
  38. ENGINE = InnoDB
  39. DEFAULT CHARACTER SET = utf8
  40. COLLATE = utf8_general_ci


a tutaj taki error dokladnie wyskakuje.
(IMG:http://ml0dy.linuxpl.com/images/02.jpg)

a ze jeszcze zapytam, jesli jeden wpis place mialby nalezec do wielu kategorii, to moze lepiej zrobic osobna tabele, z relacja wiele do wielu, place.id i category_tree.id ?
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Cytat
jesli jeden wpis place mialby nalezec do wielu kategorii, to moze lepiej zrobic osobna tabele, z relacja wiele do wielu, place.id i category_tree.id ?
tak
Go to the top of the page
+Quote Post
f4ll3ns3raf1n
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.11.2009

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


jak sie okazało, wpis należy tylko do jednej kategorii, wiec tabela wiele do wielu nie będzie rozwiązaniem. udało się coś niepokojącego znaleźć w strukturze tych 2 tabel? (IMG:style_emoticons/default/sciana.gif) (IMG:style_emoticons/default/sciana.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




No mi to dziala.
Jedyne co mi sie rzuca w oczy:
- po co dajesz nazwe baz danych wszedzie?
- czy liczba kategorii naprawdę bedzie tak duza, ze wymagany jest typ BIGINT? Oszczedzaj miejsce (IMG:style_emoticons/default/smile.gif)

ps: blad jaki dostajesz wyskakuje na ALTER TABLE, a tutaj podales kod na CREATE TABLE. Czy ty na pewno nam wszystko pokazales?
Go to the top of the page
+Quote Post
f4ll3ns3raf1n
post
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.11.2009

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


nospor, moze i rzeczywiscie id kategorii zatrzymam na INT,
kod podalem na create table, owszem, bo taki najszybciej z Workbencha było skopiować, zarówno CREATE TABLE jak i ALTER TABLE wywala sie na tym samym, zwraca ten sam blad. dlatego... zrobilem dokladnie taka sama tabele PLACES ale bez kluczy obcych, a nastepnie poprzez alter table je pokolei dodawalem, by zobaczyc przy ktorym FK sie dokladnie wywalalo. i o ile FK street_id i client_id udalo sie powiazac bez problemu, trudnosci sprawilo mi wlasnie to.
na chwile obecna jestem w pracy, wroce to sprobuje to zrobic na prostym INT
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: 16.09.2025 - 04:17