Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

José Tonim

[Resolvido] erro 150

Recommended Posts

Fala galera beleza?

 

Seguinte , estou começando cm mysql e estou tentando fazer algo aqui cm uns tutorais e tudo mais, e estou com problema ao criar esse "foreign key" da erro 150 e quando tento fazer na mão e vou tentar criar relações da "Erro ao criar chave externa no id_produto (check data types)"

Se puderem me ajudar...

 

Tabela produtos

CREATE TABLE produtos

(id serial NOT NULL,
nome character varying(80) NOT NULL,
preco double precision,
id_promocao integer,
CONSTRAINT produtos_pkey
PRIMARY KEY (id));

 

Tabela estoques

CREATE TABLE estoques

(id_produto integer NOT NULL,
quantidade integer,
maximo integer,
minimo integer,
reservada integer,
CONSTRAINT estoques_pkey PRIMARY KEY (id_produto),
CONSTRAINT estoques_id_produto_fkey FOREIGN KEY (id_produto)
REFERENCES produtos (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)"

Compartilhar este post


Link para o post
Compartilhar em outros sites

José o que provavelmente está a acontecer é que tu não tens no teu produto o id_produto como integer, alias, na tua tabela não tem nenhum atributo id_produto,a tua tabela poderia ficar mais ou menos assim:

 

create table produtos(id_produto integer not null auto_increment primary key, nome varchar(45), preco double)

 

Agora na hora de você criar a tabela estoques, podes fazer:

 

create table estoques(id_estoques integer not null auto_increment primary key, quantidade integer, maximo integer, minimo integer,id_produto integer, foreign key(id_produto) references produtos(id_produto));

 

Com relação erro 150 se não me engano tem haver com o tipo de engine que o mysql usa por padrão nas tabelas que é o InnoDB, tu podes alterar o tipo de engine para por exemplo MyIsam existem varias engines. Se por ex ocorrer o erro 150 ao criar a tabela estoques você pode definir uma outra engine fazendo isso:

 

create table estoques(id_estoques integer not null auto_increment primary key, quantidade integer, maximo integer, minimo integer,id_produto integer, foreign key(id_produto) references produtos(id_produto)) engine = MyIsam;

 

Um conselho como estas a começar a estudar mysql agora evite usar programas que criem tabelas de forma automatica, como o MySql Front, Query Browser, Administrator etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mas o id_produto da tabela estoque não esta se referindo a id da tabela produtos? Precisa ter o mesmo nome??

Sim, deve ser o msmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.