Galera, estou com um grande problema ao criar tabelas MySQL. Eis o código:
/* TABELA LOCAIS_PROD */
CREATE TABLE locais_prod (
cod_local INT NOT NULL,
nome_local VARCHAR(30) NOT NULL,
PRIMARY KEY (cod_local)
);
/* TABELA TIPOS */
CREATE TABLE tipos (
cod_tipo INT NOT NULL,
nome_tipo VARCHAR(30) NOT NULL,
PRIMARY KEY (cod_tipo)
);
/* TABELA CLASSES */
CREATE TABLE classes (
cod_classe INT NOT NULL,
nome_classe VARCHAR(30) NOT NULL,
PRIMARY KEY (cod_classe)
);
/* TABELA UVAS */
CREATE TABLE uvas (
cod_uva INT NOT NULL,
nome_uva VARCHAR(30) NOT NULL,
PRIMARY KEY (cod_uva)
);
/* TABELA TEOR */
CREATE TABLE teor (
cod_teor INT NOT NULL,
teor_acucar VARCHAR(30) NOT NULL,
PRIMARY KEY (cod_teor)
);
/* ----------------------------- */
/* TABELA VINHOS */
CREATE TABLE vinhos (
cod_vinho INT NOT NULL,
nome_vinho VARCHAR(30) NOT NULL,
cod_tipo INT NOT NULL,
cod_teor INT NOT NULL,
cod_uva INT NOT NULL,
cod_classe INT NOT NULL,
PRIMARY KEY (cod_vinho),
FOREIGN KEY (cod_tipo) references tipos(cod_tipo),
FOREIGN KEY (cod_teor) references teor(cod_teor),
FOREIGN KEY (cod_uva) references uvas(cod_uva),
FOREIGN KEY (cod_classe) references classes(cod_classe)
);
/* TABELA SAFRAS */
CREATE TABLE safras (
cod_vinho INT NOT NULL,
ano_safra INT NOT NULL,
qtd_vinho INT NOT NULL,
temp_media INT NOT NULL,
tempo_ferm_vinho INT NOT NULL,
PRIMARY KEY (cod_vinho, ano_safra),
FOREIGN KEY (cod_vinho) references vinhos(cod_vinho)
);
/* TABELA RELACIONAL */
CREATE TABLE relac (
cod_vinho INT NOT NULL,
ano_safra INT NOT NULL,
cod_local INT NOT NULL,
PRIMARY KEY (cod_vinho, ano_safra, cod_local),
FOREIGN KEY (cod_vinho) references vinhos(cod_vinho),
FOREIGN KEY (ano_safra) references safras(ano_safra),
FOREIGN KEY (cod_local) references locais_prod(cod_local)
);
PROBLEMA:
O MySQL dá o seguinte ERRO: "#1005 - Can't create table '.\bd\relac.frm' (errno: 150)"
Ele cria todas as tabelas menos a "relac", e já percebi que o erro está quando faço a seguinte relação:
"FOREIGN KEY (ano_safra) references safras(ano_safra)"
Qual será o problema? Já pesquisei e não achei nada similar a isto. Estou já desesperado pois tenho que terminar isto até este sábado.
Obrigado desde já.