Não cria tabela no MySQL
Tento executar o código abaixo gerado pelo ferramenta de modelagem do MySQL, mas fiquei sem entender:
erro
[img]http://arquivo.devmedia.com.br/forum/imagem/362748-20141225-192548.jpg[/img]
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
Curtidas 0
Melhor post
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....
Cria a tabela depois cria o INDEX e a CONSTRAINT....
GOSTEI 1
Mais Respostas
Janaina Mendes
25/12/2014
Estranho, fiz isso na ferramenta de modelagem e me foi gerado isso.
GOSTEI 0
Marisiana Battistella
25/12/2014
Chegou a fazer como falei?
GOSTEI 0
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:
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
25/12/2014
Qual é a ferramenta de modelagem que vc está utilizando, Janaina?
GOSTEI 0
Janaina Mendes
25/12/2014
Chegou a fazer como falei?
Não, usei a ferramenta do proprio mysql.
GOSTEI 0
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
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
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
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
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
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
25/12/2014
Você instalou o MySQL recentemente ou é uma versão que vc já trabalha há algum tempo?
GOSTEI 0
Janaina Mendes
25/12/2014
Recentemente.
GOSTEI 0
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).
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
25/12/2014
Consegui criar o banco, tentei criar a tabela como não consegui, apaguei o banco novamente.
GOSTEI 0
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...
Se acontece pode ser q ocorreu alguma falha na instalação...
GOSTEI 0
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
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
25/12/2014
Que bom q conseguistes resolver, Janaina!!
Obrigada pelo feedback!
Obrigada pelo feedback!
GOSTEI 0
Janaina Mendes
25/12/2014
Só consegui porque re-li com mais calma esse post.
GOSTEI 0