Autor Zpráva
Luksa
Profil *
Zdravím, při vytváření tabulky mi naskočí tato chybová hláška #1005 - Can't create table './db/clanek.frm' (errno: 150) Čím to je?

CREATE TABLE tema (
    tid INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    tema VARCHAR(100) NOT NULL
)
ENGINE=InnoDB; 

CREATE TABLE clanek (
    cid INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    clanek VARCHAR(10000) NOT NULL,
    id_tematu INTEGER NOT NULL, 
    FOREIGN KEY (id_tematu) REFERENCES tema (tid) ON DELETE CASCADE
)
ENGINE=InnoDB;


Díky za rady
Aesir
Profil
[#1] Luksa:
Jakou používáte databázi a v jaké verzi?
Luksa
Profil *
Aesir:
MySQL: 5.0.77
nightfish
Profil
problém je v tom, že tema.tid je UNSIGNED INTEGER, zatímco id_tematu je INTEGER, ale ne UNSIGNED
viz třeba první výsledek z Googlu - http://forums.devarticles.com/mysql-development-50/mysql-foreign-key-problem-errno-150t-7704.html
Aesir
Profil
[#3] Luksa:

FOREIGN KEY musí být stejného typu jako odkazovaný sloupec, takže přidejte v clanek.id_tematu vlastnosti UNSIGNED a mělo by to být snad ok.

edit: tož pozdě...ale ani upozornění na nový příspěvek to nestihlo
Luksa
Profil *
nightfish, Aesir:
Díky
Nox
Profil
Někdy to chybu hlásí (při vytváření foreign keys směřujících na již existující tabulku), i když vlastnosti sloupců jsou opravdu identické....v takovém případě mi pomohlo původní sloupec smazat a vytvořit znovu
Aesir
Profil
[#7] Nox:

V takovém případě by mohlo pomoci nastavit před tou úpravou FOREIGN_KEY_CHECKS na 0.
SET FOREIGN_KEY_CHECKS = 0;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: