Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MyISAM/InnoDB] Nie mogę utworzyć tabeli z kluczem zew. na silniku InnoDB, Na MyISAM działa
starach
post 23.09.2011, 16:45:18
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Hej mam następującą tabelę

Jeden klucz zew. jest dodany do tabeli w której przechowywani są użyszkodnicy, natomiast _country_id leci do tabeli która przechowuje nazwy państw. Czyli niezbyt to skomplikowane.

Niestety kiedy prubuję utworzyć tą tabelę przy ustawionym silniku składowania na InnoDB wywala mi ona błąd 1005: Nie można utworzyć tabeli ( 105) znalazłem co nieco o nim tutaj niestety nie ma tam opisanego mojego przypadku.

Znalazłem rozwiązanie typu plaster na (_|_), które polega na zmianie typu na MyISAM, dodaniu tabeli, a następnie manualnej zmianie na InnoDB. Chciałbym jednak wiedzieć co powoduje ten błąd żebym nie musiał go obchodzić w przyszłości.

Dzięki

Edit>
Kod
CREATE  TABLE IF NOT EXISTS `state` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(125) NOT NULL ,
  `_country_id` INT NOT NULL ,
  PRIMARY KEY (`id`) ,
  UNIQUE INDEX `code_UNIQUE` (`id` ASC) ,
  INDEX `fk_state_country` (`_country_id` ASC) ,
  CONSTRAINT `fk_state_country`
    FOREIGN KEY (`_country_id` )
    REFERENCES `country` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB


Ten post edytował starach 23.09.2011, 16:52:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Smertius
post 23.09.2011, 17:21:51
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


Pokaż kod CREATE TABLE drugiej tabeli. Prawdopodobnie pola które tworzą klucz mają różną definicje np. w jeden z tabel zamiast INT, jest UNSIGNED INT i to już nie zadziała i wywali błąd 1005
Go to the top of the page
+Quote Post
starach
post 23.09.2011, 17:56:33
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Faktycznie. Musiałem po zrobieniu relacji w edytorze graficznym przez przypadek odznaczyć UNSIGNE INT. Dzięki już działa.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:05