Autor Zpráva
emissary
Profil
Zdravím,

viete mi povedať v čom je problém? Vyhadzuje mi chybu #1005 - Can't create table '.\school\studentcourse.frm' (errno: 150)

niečo s kľúčmi a previazaním tabuliek. Foreign Key Problem. Jedná sa konkrétne o tabulku "studentcourse".

CREATE TABLE student (
studentid SERIAL NOT NULL PRIMARY KEY,
name varchar(255)
);

CREATE TABLE course (
courseid SERIAL NOT NULL PRIMARY KEY,
coursecode varchar(10),
name varchar(255)
);

CREATE TABLE studentcourse (
studentid integer,
courseid integer,
CONSTRAINT fk_studentcourse_studentid FOREIGN KEY (studentid) REFERENCES student(studentid),
CONSTRAINT fk_studentcourse_courseid FOREIGN KEY (courseid) REFERENCES course(courseid)
);

CREATE UNIQUE INDEX idx_studentcourse_unique ON studentcourse(studentid, courseid);
_es
Profil
emissary:
Polia studentid a courseid musia mať pri vytvorení tabuľky definované indexy.
juriad
Profil
Asi by bylo vhodné zmínit, že se jedná o PostgreSQL.
Indexy by neměly být třeba (alespoň podle dokumentace), byť jsou obecně vhodné. Tady navíc je index implicitně tvořený PRIMARY KEY.
Ale samotný problém nevidím.
Kajman
Profil
juriad:
Asi by bylo vhodné zmínit, že se jedná o PostgreSQL.
Podle čísla chyby to vypadá spíše na mysql.

emissary
Je na tom serveru podpora innodb tabulek? Povede se vytvoření, když u všech třech tabulek přímo určíte, že se mají vytvořit v innodb (před středníky přidat TYPE=InnoDB)? Případně můžete zkusit v tabulce studentcourse ty dva sloupce zadat jako bigint místo integer, aby odpovídaly typu z tabulek, na které se odkazují.
_es
Profil
juriad:
Myslel som indexy v tabuľke studentcourse, no keď píšeš, že to nie je treba, tak bude asi chyba inde.
juriad
Profil
Kajman:
Jo, aha, typ SERIAL jsem neznal. SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
Měl jsem pochybnosti; on se mi nezdál ten soubor .frm.
emissary
Profil
Zdravím...

Ste borci... jedná sa o kód k PostgreSQL , ja som v databázach v úplných začiatkoch. Takže mám v tom trocha problém. Je to príklad z jednej knihy. Myslel som si (doteraz mi všetko fungovalo tak), že keď to pustím do MySQL, tak to bude pracovať rovnako. Ale asi som sa riadne mýlil. Takže pre upresnenie. Je to kód pre PostgreSQL a chcel by som to rozbehnúť na MySQL. Ako by som to mal upraviť?


Takže ten istý kód som zadal u seba doma na serveri a v pohode prešiel. Bez problémov. Tamto som skúšal na LAMP čo som sa nudil v práci. Niekde som to stiahol na nete. Ani MySQLi to nepodporovalo. Tak problém bol asi tam.

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: