Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uparty FOREIGN KEY...
Forum PHP.pl > Forum > Bazy danych
PKua
Cześć!

Mam pewien problem z dodaniem klucza obcego. Mam trzy tabelki (wziąłem z SHOW CREATE TABLE):
  1. CREATE TABLE `notifications` (
  2. `notid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `uid` int(10) UNSIGNED NOT NULL,
  4. `type` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  5. `content` varchar(1024) COLLATE utf8_polish_ci NOT NULL,
  6. PRIMARY KEY (`notid`)
  7. ) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci


  1. CREATE TABLE `songs` (
  2. `songid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `author` varchar(64) COLLATE utf8_polish_ci NOT NULL,
  4. `title` varchar(64) COLLATE utf8_polish_ci NOT NULL,
  5. `link` varchar(11) COLLATE utf8_polish_ci NOT NULL,
  6. `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  7. `allocation` tinyint(4) NOT NULL DEFAULT '0',
  8. `uid` int(11) NOT NULL,
  9. `status` int(11) NOT NULL DEFAULT '0',
  10. PRIMARY KEY (`songid`)
  11. ) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci


  1. CREATE TABLE `users` (
  2. `uid` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  4. `pass` varchar(41) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL,
  5. `reg_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  6. `rank` tinyint(4) NOT NULL DEFAULT '0',
  7. `forum_respect` smallint(6) NOT NULL DEFAULT '0',
  8. `server_respect` int(10) NOT NULL DEFAULT '0',
  9. PRIMARY KEY (`uid`),
  10. UNIQUE KEY `login` (`login`)
  11. ) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci


I teraz chciałem dodać klucz obcy do notifications, żeby przy usuwaniu użytkownika kasowało także jego powiadomienia. Robię tak:
  1. ALTER TABLE notifications
  2. ADD FOREIGN KEY (uid)
  3. REFERENCES users(uid)
  4. ON DELETE CASCADE
  5. ON UPDATE CASCADE


i wywala:
Kod
#1005 - Can't create table 'www.#sql-135c_140' (errno: 150)


To samo jak dam:
  1. ALTER TABLE notifications
  2. ADD CONSTRAINT fk_not_uid
  3. FOREIGN KEY (uid)
  4. REFERENCES users(uid)
  5. ON DELETE CASCADE
  6. ON UPDATE CASCADE


Próbowałem zrobić zrzut z bazy, usunąłem ją, utworzyłem ponownie, ale dalej tak samo.

Ma ktoś jakiś pomysł?
matiit
Mas różne typy kluczów głównych
PKua
Racja, przecież w powiadomieniach jest UNSIGNED a w użytkownikach nie facepalmxd.gif . Dzięki wielkie... A powie ktoś pokrótce o co chodzi z tym CONSTRAINT? Na czym to polega?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.