[ markkooo @ 18.12.2012. 16:30 ] @
Pozdrav...
Trebala bi mi pomoc oko kreiranja baze...
Kreirao sam neke tabele(naravno one koje nemaju foreign key)
Ali kad je dosao red na te table, odbija se njeno kreiranje sa greskom #1005 - Can't create table
Radim u testnom (wamp) serveru...Evo koje dvije tabele zelim da povezem...

create table nivo_kvalifkacije (
id_nivoa smallint not null,
naziv varchar(200) not null,
stepen varchar(10) not null,
primary key(id_nivoa)
);


create table smer (
id_smera integer not null,
oznaka varchar(10) not null,
bodovi smallint not null default 180,
constraint chk_bodovi check(
bodovi between 30 and 500 ),
id_nivoa smallint not null,
primary key (id_smera) ,
foreign key (id_nivoa)
references nivo_kvalifkacije,
constraint uk_sifra unique(oznaka)
);
Prva se kreira,ali druga nece...Molio bi ako neko zna o cemu je rijec da me uputi...
[ mret @ 18.12.2012. 18:49 ] @
jesil` probao bez ovog dela
Code:
constraint chk_bodovi check(
bodovi between 30 and 500 ),


Nisam bas siguran da MySql podrzava check constraint.
[ markkooo @ 18.12.2012. 18:52 ] @
Jesam...Ista greska se javlja...
Problem je sa ovim foreign key...ali nikako da te dvije tabele spojim...
Kad obrisem ovo foreign key moze...
[ Igor Gajic @ 18.12.2012. 19:00 ] @
Code (sql):


 CREATE TABLE smer (
 id_smera INTEGER NOT NULL,
 oznaka VARCHAR(10) NOT NULL,
 bodovi SMALLINT NOT NULL DEFAULT 180,
 CONSTRAINT chk_bodovi CHECK(
 bodovi BETWEEN 30 AND 500 ),
 id_nivoa SMALLINT NOT NULL,
 PRIMARY KEY (id_smera),
 FOREIGN KEY FK_ID_NIVOA(id_nivoa) REFERENCES nivo_kvalifkacije(id_nivoa),
 CONSTRAINT uk_sifra UNIQUE(oznaka)
 );
 
[ markkooo @ 18.12.2012. 19:15 ] @
I tu nece...ista greska...
Ne znam sta da radim...
Pokusao sam i definsaati INDEX na to id_nivoa...ali i to nema efekta...
[ Igor Gajic @ 18.12.2012. 19:23 ] @
Kod mene radi
[ markkooo @ 18.12.2012. 19:51 ] @
Ok...Moze li biti nesto do podesavanja programa??servera ili tako nesto???
[ Igor Gajic @ 18.12.2012. 19:55 ] @
Mozda ti je do redosleda kako kreiras tabele. Dakle... Prazna baza, pa kreiras tabelu 'nivo_kvalifkacije' (primeti da si napravio typo), pa onda tabelu 'smer'.


Kopiraj ovaj kod u Workbench i Ctrl+F5 na jednu pa na drugu tabelu(tj. na text koji kreira odgovarajucu tabelu):

CREATE TABLE nivo_kvalifkacije (
id_nivoa SMALLINT NOT NULL,
naziv VARCHAR(200) NOT NULL,
stepen VARCHAR(10) NOT NULL,
PRIMARY KEY(id_nivoa)
);

CREATE TABLE smer (
id_smera INTEGER NOT NULL,
oznaka VARCHAR(10) NOT NULL,
bodovi SMALLINT NOT NULL DEFAULT 180,
id_nivoa SMALLINT NOT NULL,
PRIMARY KEY (id_smera),
FOREIGN KEY FK_ID_NIVOA(id_nivoa) REFERENCES nivo_kvalifkacije(id_nivoa),
CONSTRAINT uk_sifra UNIQUE(oznaka),
CONSTRAINT chk_bodovi CHECK(bodovi BETWEEN 30 AND 500 )
);
[ markkooo @ 18.12.2012. 20:04 ] @
Da da...tako sam i napravio...prvo tabelu nivo_kvalifkacije...
Pa onda ovu tabelu smer...
Ali uvijek je greska ista...
Kao da ne prepoznaje ovo foreign key...
[ Igor Gajic @ 18.12.2012. 20:18 ] @
Probaj jos ovo:


CREATE TABLE smer (
id_smera INTEGER NOT NULL,
oznaka VARCHAR(10) NOT NULL,
bodovi SMALLINT NOT NULL DEFAULT 180,
id_nivoa_2 SMALLINT NOT NULL,
PRIMARY KEY (id_smera),
FOREIGN KEY FK_ID_NIVOA(id_nivoa_2) REFERENCES nivo_kvalifkacije(id_nivoa),
CONSTRAINT uk_sifra UNIQUE(oznaka),
CONSTRAINT chk_bodovi CHECK(bodovi BETWEEN 30 AND 500 )
);


isti princip, prazna baza, redosled kreiranja pa javi.
[ markkooo @ 18.12.2012. 20:41 ] @
Opet nece...
[ peromalosutra @ 19.12.2012. 07:33 ] @
Ne znam ko ti generise ovaj SQL, ali upit za kreiranje druge tabele nije dobar, treba biti

Code:

create table smer (
id_smera integer not null,
oznaka varchar(10) not null,
bodovi smallint not null default 180,
constraint chk_bodovi check(
bodovi between 30 and 500 ),
id_nivoa smallint not null,
primary key (id_smera) ,
foreign key (id_nivoa)
references nivo_kvalifkacije (id_nivoa),
constraint uk_sifra unique(oznaka)
);


Dakle, u stranom kljucu moras specifikovati ime tabele i ime kolone na koju se ogranicenje odnosi. Takodje, tabela mora biti u innodb formatu.

edit: Sad vidim da je ovaj pogresan kod samo u prvom postu, a kasnije je ispravljen. Ako i dalje imas problema, probaj izbaciti foreign key iz druge tabele, pa ga naknadno dodaj sa UPDATE TABLE .. sintaksom?
[ markkooo @ 19.12.2012. 08:59 ] @
Pokusao sam sad i tako...
Ali evo greske...#1005 - Can't create table 'mojabaza.#sql-10ec_1d2' (errno: 150).
Kreira se bez foreign key-a, ali kad g apokusam ubaciti(kao sto si mi i rekao) javi se ova greska...tj.odbija se dodavanje tog kljuca...
Mislis ovako:
ALTER TABLE smer
ADD FOREIGN KEY (id_nivoa)
REFERENCES nivo_kvalifkacije(id_nivoa)
[ dsivic @ 20.12.2012. 17:59 ] @
mora da su ti ostali neki indexi od prethodnih pokusaja... obrisi cijelu bazu pa pokusaj ponovo, ja sam pokusao i ovo radi:
Code:


CREATE TABLE nivo_kvalifkacije (
id_nivoa SMALLINT NOT NULL,
naziv VARCHAR(200) NOT NULL,
stepen VARCHAR(10) NOT NULL,
PRIMARY KEY(id_nivoa)
);

CREATE TABLE smer (
id_smera INTEGER NOT NULL,
oznaka VARCHAR(10) NOT NULL,
bodovi SMALLINT NOT NULL DEFAULT 180, 
id_nivoa SMALLINT NOT NULL,
PRIMARY KEY (id_smera),
FOREIGN KEY FK_ID_NIVOA(id_nivoa) REFERENCES nivo_kvalifkacije(id_nivoa),
CONSTRAINT uk_sifra UNIQUE(oznaka),
CONSTRAINT chk_bodovi CHECK(bodovi BETWEEN 30 AND 500 )
);
[ markkooo @ 20.12.2012. 18:50 ] @
Bravo...
pravio sam indekse i tako spajao,
ali nisam kontao da mi je to problem...
Evo...tabela smer mi je unijeta...
Imam jos 7 tabela unijeti...
Ako bude problema...
Nadam se da ces mi opet pomoci...
Samo pitanje jos jedno...
Kako unijeti(importovati) u bazu podatke(jer mi ima 12 tabela )
Imam podatke preko nekih .ixf fajlova(mislim da je ova baza prvobitno planirana za
DB2)...Ali sumnjam da se oni mogu
unijeti preko MYsql-a...Da li slucajno postoji nacin da ih unesem u MYSql???alirati st
Skinuo sam i DB2...ali nekakav problem imam sa prikazom,jt. kad otvorim ovaj program nemam prikaz kako da pravim bazu...Uopste mi se nikakav
prozor za kreiranje ne pojavljuje...