Chce stworzyc relacje pomiedzy tabela users i dane

Schemat:
1. Twoje tabele muszą być typu InnDB
2. Wybierz tabelę podrzędną i przejdź do widoku 'Struktura'
3. Poniżej tabelki opisującej poszczególne kolumny będzie link 'Widok relacyjny'. Kliknij w niego.
4. Określ referencje, akcje 'ON DELETE' i 'ON UPDATE'

  1. Tabele:

  1. --
  2. -- Struktura tabeli dla tabeli `wpl_users`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `wpl_users` (
  6. `users_id` int(11) NOT NULL AUTO_INCREMENT,
  7. `users_usersdane_id` int(11) NOT NULL,
  8. `users_login` varchar(50) NOT NULL,
  9. `users_haslo` varchar(50) NOT NULL,
  10. `users_token` varchar(10) NOT NULL,
  11. `users_aktywny` int(11) NOT NULL,
  12. PRIMARY KEY (`users_id`),
  13. KEY `users_usersdane_id` (`users_usersdane_id`)
  14. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
  15.  
  16. --
  17. -- Zrzut danych tabeli `wpl_users`
  18. --
  19.  
  20. INSERT INTO `wpl_users` (`users_id`, `users_usersdane_id`, `users_login`, `users_haslo`, `users_token`, `users_aktywny`) VALUES
  21. (1, 0, 'root', '123456', '', 1);
  22.  
  23. -- --------------------------------------------------------
  24.  
  25. --
  26. -- Struktura tabeli dla tabeli `wpl_usersdane`
  27. --
  28.  
  29. CREATE TABLE IF NOT EXISTS `wpl_usersdane` (
  30. `usersdane_id` int(11) NOT NULL AUTO_INCREMENT,
  31. `usersdane_users_id` int(11) NOT NULL,
  32. `usersdane_imie` varchar(50) NOT NULL,
  33. `usersdane_nazwisko` varchar(50) NOT NULL,
  34. `usersdane_emial` varchar(50) NOT NULL,
  35. PRIMARY KEY (`usersdane_id`),
  36. KEY `usersdane_users_id` (`usersdane_users_id`)
  37. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--


Pokazuje sie taki blad:
  1. Zapytanie SQL:
  2.  
  3. ALTER TABLE `wpl_users` ADD FOREIGN KEY ( `users_dane_id` ) REFERENCES `projekt2`.`wpl_dane` (
  4. `dane_id`
  5. ) ON DELETE CASCADE ON UPDATE CASCADE ;
  6.  
  7. MySQL zwrócił komunikat: Dokumentacja
  8. #1452 - Cannot add or update a child row: a foreign key constraint fails (`projekt2`.`#sql-34c0_258`, CONSTRAINT `#sql-34c0_258_ibfk_1` FOREIGN KEY (`users_dane_id`) REFERENCES `wpl_dane` (`dane_id`) ON DELETE CASCADE ON UPDATE CASCADE)


ps

dla jednej tabeli tak jakby w jedna strone juz mi cos wyszlo czyli

  1. ALTER TABLE `wpl_usersdane`
  2. ADD CONSTRAINT `wpl_usersdane_ibfk_1` FOREIGN KEY (`usersdane_users_id`) REFERENCES `wpl_users` (`users_id`);


ale jak teraz zuser do dane chce to jest blad? o co chodzi wie ktos? pierwszy raz chce zrobic baze oparta o relacje i nie mam pojecia co jest nie tak

Probowalem tez cos takiego ale nie dziala:
  1. ALTER TABLE [wpl_users] WITH CHECK ADD CONSTRAINT [FK_users_dane] FOREIGN KEY [users_dane_id] REFERENCES [wpl_dane] [dane_id]
  2. ALTER TABLE [wpl_users] CHECK CONSTRAINT [FK_users_danes]