Não cria tabela no MySQL

MySQL

25/12/2014

Tento executar o código abaixo gerado pelo ferramenta de modelagem do MySQL, mas fiquei sem entender:



CREATE TABLE IF NOT EXISTS `crud_devmedia`.`tb_pessoa` (
  `id_pessoa` INT(11) NOT NULL AUTO_INCREMENT,
  `nome` VARCHAR(45) NOT NULL,
  `cpf` FLOAT(11) NOT NULL,
  `dt_nasc` DATE NULL DEFAULT NULL,
  `sexo` CHAR(1) NOT NULL,
  `mini_bio` VARCHAR(100) NULL DEFAULT NULL,
  `cod_endereco` INT(11) NOT NULL,
  PRIMARY KEY (`id_pessoa`),
  INDEX `fk_tb_pessoa_tb_endereco1_idx` (`cod_endereco` ASC),
  CONSTRAINT `fk_tb_pessoa_tb_endereco1`
    FOREIGN KEY (`cod_endereco`)
    REFERENCES `crud_devmedia`.`tb_endereco` (`id_endereco`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_swedish_ci;



erro

[img]http://arquivo.devmedia.com.br/forum/imagem/362748-20141225-192548.jpg[/img]
Janaina Mendes

Janaina Mendes

Curtidas 0

Melhor post

Marisiana Battistella

Marisiana Battistella

26/12/2014

Deve ser porque vc está criando o INDEX e a FOREIGN KEY ao mesmo tempo q está criando a tabela e por isso o MySQL não está encontrando a tabela...
Cria a tabela depois cria o INDEX e a CONSTRAINT....
GOSTEI 1

Mais Respostas

Janaina Mendes

Janaina Mendes

25/12/2014

Estranho, fiz isso na ferramenta de modelagem e me foi gerado isso.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

25/12/2014

Chegou a fazer como falei?
GOSTEI 0
Fernando C

Fernando C

25/12/2014

por via das duvidas verifique se a tabela tb_endereco foi criada corretamente (acho q tem q ser tipo innodb tb).
rodei esses 2 comandos no HeidiSQL numa "paulada" só e criou tudo certinho:

CREATE TABLE `tb_endereco` (
  `id_endereco` int(11) NOT NULL 
auto_increment,
  `rua` varchar(45) NOT NULL,
  PRIMARY KEY  
(`id_endereco`)
) ENGINE=innodb DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `tb_pessoa` (
  `id_pessoa` INT(11) NOT NULL AUTO_INCREMENT,
  `nome` VARCHAR(45) NOT NULL,
  `cpf` FLOAT(11) NOT NULL,
  `dt_nasc` DATE NULL DEFAULT NULL,
  `sexo` CHAR(1) NOT NULL,
  `mini_bio` VARCHAR(100) NULL DEFAULT NULL,
  `cod_endereco` INT(11) NOT NULL,
  PRIMARY KEY (`id_pessoa`),
  INDEX `fk_tb_pessoa_tb_endereco1_idx` (`cod_endereco` ASC),
  CONSTRAINT `fk_tb_pessoa_tb_endereco1`
    FOREIGN KEY (`cod_endereco`)
    REFERENCES `tb_endereco` (`id_endereco`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_swedish_ci;
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

25/12/2014

Qual é a ferramenta de modelagem que vc está utilizando, Janaina?
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

Chegou a fazer como falei?


Não, usei a ferramenta do proprio mysql.
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

Fernando C, eu tentei de varias formas criar as tabelas de acordo com os código, mas da sempre erro nessa tabela.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

25/12/2014

Eu não lembro em qual SGBD aconteceu isso, mas já tive q criar a tabela e depois incluir a FK com um ALTER TABLE...
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

Acho que isso pode ser feito em qualquer um, mas isso vai depender se tem dados. eu acho apenas.
GOSTEI 0
Fernando C

Fernando C

25/12/2014

mas da sempre erro nessa tabela

olha, eu testei várias vezes, não há nenhum problema com o código de criação dessa 2ª tabela.
1 problema muito comum é a chave primária da 1ª tabela ter sido criada como "unsigned"
ai vc tem que incluir esse atributo na 2ª;
tente pegar a mensagem de erro completa e verifique também se a 1ª tabela não foi criada como myisam.
há dados nessa 1ª tabela?
qualquer coisa poste a estrutura dessa 1ª tabela; acho q vale a pena.
verifique também se essa 2ª tabela já não foi criada antes (o Heidi, por exemplo, não atualiza o banco automaticamente).
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

Estou com um outro problema, não se tem haver, eu tento dropar esse banco mas ele excluir apenas a tabelas, o banco continua.
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

Finalmente consegui Dropar o banco, com uma reinstalação de tudo, porem acho que problema está na criação da tabela mesmo. não sei o que fazer.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

25/12/2014

Você instalou o MySQL recentemente ou é uma versão que vc já trabalha há algum tempo?
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

Recentemente.
GOSTEI 0
Fernando C

Fernando C

25/12/2014

mas conseguiu criar o banco? (ex: esse crud_devmedia)?
só por via das duvidas: vc não está alterando os bancos de sistema do Mysql (information_schema, mysql e test)?
e ultima tentativa: conseguiu criar a 1ª tabela? (sem ela a 2ª não vai rolar).
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

Consegui criar o banco, tentei criar a tabela como não consegui, apaguei o banco novamente.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

25/12/2014

Isso acontece com outros bancos que vc cria ou criou?
Se acontece pode ser q ocorreu alguma falha na instalação...
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

A criação do banco ocorre sem maiores problemas, o problema é no código que postei.
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

Consegui, revendo o sql disponibilizado, a ordem estava enganada. tiver que ler as mensagens com mais calma e vi que estava faltando uma tabela.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

25/12/2014

Que bom q conseguistes resolver, Janaina!!
Obrigada pelo feedback!
GOSTEI 0
Janaina Mendes

Janaina Mendes

25/12/2014

Só consegui porque re-li com mais calma esse post.
GOSTEI 0
POSTAR