Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
mtemporim

Erro no MySql - Socorro

Recommended Posts

Segue abaixo uma criação de tabelas simples, alguem saberia me dize o que esta errado e porque?

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4 to server version: 5.0.26-community-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database Trabalho

-> ;

Query OK, 1 row affected (0.00 sec)

mysql> use Trabalho;

Database changed

mysql> create table Dept (

-> DepNume integer(4) not null,

-> DepNome varchar(20) not null,

-> DepLoca varchar(20) not null,

-> DepOrca integer(12),

-> primary key (DepNume)

-> );

Query OK, 0 rows affected (0.03 sec)

mysql> create table Emp (

-> EmpNume integer(4) not null,

-> EmpNome varchar(30) not null,

-> EmpGere integer(5),

-> EmpServ varchar(20),

-> DepNume integer(4) not null,

-> EmpAdmi date,

-> EmpSala integer(10),

-> EmpComi integer(10),

-> primary key (EmpNume),

-> foreign key (DepNume) references Dept on delete restrict on update cascad

e

-> );

ERROR 1005 (HY000): Can't create table '.\trabalho\emp.frm' (errno: 150)

mysql>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, dê uma lida nesse link, para esclarecer o que é....

Para criar chave estrangeira, as duas tabelas tem que ser do tipo INNODB

ENGINE=INNODB,

verifique isso

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá, dê uma lida nesse link, para esclarecer o que é....

Para criar chave estrangeira, as duas tabelas tem que ser do tipo INNODB

ENGINE=INNODB,

verifique isso

Primeiramente quero te agradecer por se oferecer a ajudar, tentei criar as tabelas como InnoDB, mas apenas a primeira foi, da uma olhada por favor..

mysql> create database Trabalho;

Query OK, 1 row affected (0.00 sec)

mysql> use Trabalho

Database changed

mysql> create table Dept (

-> DepNume integer(4) not null,

-> DepNome varchar(20) not null,

-> DepLoca varchar(20) not null,

-> DepOrca integer(12),

-> primary key (DepNume)) Type = InnoDB;

Query OK, 0 rows affected, 1 warning (0.05 sec)

mysql> create table Emp (

-> EmpNume integer(5) not null,

-> EmpNome varchar(30) not null,

-> EmpGere integer(5),

-> EmpServ varchar(20),

-> DepNume integer(4) not null,

-> EmpAdmi date,

-> EmpSala integer(10),

-> EmpComi integer(10),

-> primary key (EmpNume),

-> foreign key has (DepNume) references Dept on delete restrict on update ca

scade) Type = InnoDB;

ERROR 1005 (HY000): Can't create table '.\trabalho\emp.frm' (errno: 150)

mysql>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, compare e veja onde errou ^^

create table Dept (
DepNume integer(4) not null,
DepNome varchar(20) not null,
DepLoca varchar(20) not null,
DepOrca integer(12),
primary key (DepNume)
) ENGINE = INNODB;

create table Emp (
EmpNume integer(4) not null,
EmpNome varchar(30) not null,
EmpGere integer(5),
EmpServ varchar(20),
DepNume integer(4) not null,
EmpAdmi date,
EmpSala integer(10),
EmpComi integer(10),
primary key (EmpNume),
CONSTRAINT pk_nameaaaa foreign key (DepNume) references Dept(DepNume) on delete restrict on update cascade) ENGINE = INNODB;

Uma maneira de você ver onde errou também, é usando o comando

SHOW ENGINE INNODB STATUS;

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá, compare e veja onde errou ^^

create table Dept (
DepNume integer(4) not null,
DepNome varchar(20) not null,
DepLoca varchar(20) not null,
DepOrca integer(12),
primary key (DepNume)
) ENGINE = INNODB;

create table Emp (
EmpNume integer(4) not null,
EmpNome varchar(30) not null,
EmpGere integer(5),
EmpServ varchar(20),
DepNume integer(4) not null,
EmpAdmi date,
EmpSala integer(10),
EmpComi integer(10),
primary key (EmpNume),
CONSTRAINT pk_nameaaaa foreign key (DepNume) references Dept(DepNume) on delete restrict on update cascade) ENGINE = INNODB;

Uma maneira de você ver onde errou também, é usando o comando

SHOW ENGINE INNODB STATUS;

Agora deu certo, muito obrigado Erciley pela paciencia, e ja abusando dela, você poderia me responder algumas duvidas?

eu estava definindo (DepNume) como chave estrangeira e referenciando ela na tabela Dept mas não estava especificando qual atributo era pra ser referecniado.

O que eu estava errando"

foreign key (DepNume) references Dept

O certo é

foreign key (DepNume) references Dept(DepNume)

Correto?

Mais duas coizinhas

Pra que serve o "CONSTRAINT" e o "pk_nameaaaa", eu fiz com e sem eles deu certo da mesma forma.

Agradecendo mais uma vez

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pergunta 1:

Correto, você referenciou a tabela mas não colocou o campo...

Pergunta 2:

Toda chave criada, estrangeira, PK, índice, gera um nome de chave. Nesse casso, eu defini o nome que seria, apenas por teste, mas pode retirar, escrevi qq coisa aqui ^^

Complementando: Constraint é uma cláusula para você definir o nome da chave (nome que coloquei: pk_nameaaaa), cláusula essa que pode ser omitida. =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×