Ir para conteúdo

POWERED BY:

Arquivado

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

patricias

na modelagem do Banco

Recommended Posts

Pessoal, To tentando criar o banco no servidor, na minha maquina local ta funcionando direitinho.No servidor, ao tentar executar os comandos, ele diz q nao pode criar a tabela noticias, e da o erro:

#1005 - Não pode criar a tabela './noticias/noticias.frm' (erro no. 150)

o banco foi criado agora, tem ideia do que pode ser???valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

como tem chaves estrangeiras.. cuida sempre pra criar as tabelas que não possuem chave estrangeira antes...ex.:tabela 1idcategoriatabela2fk_categoria - chave estrang. referenciada na tabela1.idnomeenderecose você for tentar criar a tabela2 antes da tabela1 vai gerar um erro.. pois a referenciação que será tentado criar não vai existir!talvez seja isso! tive bastante problemas aqui com isso.. porque sempre é exportado de jeito errado!vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, To tentando criar o banco no servidor, na minha maquina local ta funcionando direitinho.No servidor, ao tentar executar os comandos, ele diz q nao pode criar a tabela noticias, e da o erro:

#1005 - Não pode criar a tabela './noticias/noticias.frm' (erro no. 150)

o banco foi criado agora, tem ideia do que pode ser???valeu!!!
Eu percebi uma coisa, se eu mudar o tipo da tabela para MYISAM ele cria numa boa!!!mas se eu tentar fazer um update se eu estiver errada me corrijam:

DROP TABLE IF EXISTS `noticias`;CREATE TABLE IF NOT EXISTS `noticias` ( id_noticia INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , titulo VARCHAR( 40 ) NOT NULL , fonte VARCHAR( 64 ) NOT NULL , conteudo VARCHAR( 250 ) NOT NULL , destaque ENUM( "s", "n" ) NOT NULL DEFAULT 'n', fk_imagem int(11) unsigned NOT NULL, FOREIGN KEY (fk_imagem) REFERENCES imagens(id_imagem) ON UPDATE NO ACTION ON DELETE RESTRICT, data DATE NOT NULL, UNIQUE KEY titulo (titulo)) TYPE = innodb;

ele não deixa!!! a não ser q eu entre em 1 por 1 (tabela) e altere de MyISAM para INNODB, por acaso, tem como modificar isso? tem como eu saber qual é a versão do mysql usado? isso tem relacao?creio que sem essas 3 linhas:
FOREIGN KEY (fk_imagem)	REFERENCES imagens(id_imagem)	ON UPDATE NO ACTION ON DELETE RESTRICT,
a Juncao nao funciona, certo? ou to falando besteira???

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim.. primeiro que se você utilizar MyISAM não vai dar pra utizliar FOREIGN KEY (chave estrangeira)e se você retirar a FOREIGN KEY..... não vai haver referenciação..você tentou ver o que falei antes??

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim.. primeiro que se você utilizar MyISAM não vai dar pra utizliar FOREIGN KEY (chave estrangeira)e se você retirar a FOREIGN KEY..... não vai haver referenciação..você tentou ver o que falei antes??

Não, só vi tua resposta depois, vou tentar agora, ja te falo!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

yetiH fiz como você falou, e continuou o erro, pode me ajudar?segue:

CREATE TABLE setores (	id_setor INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,	setor VARCHAR( 64 ) NOT NULL) TYPE = innodb;CREATE TABLE usuarios (	id_usuario int(11) unsigned NOT NULL auto_increment,	nome varchar(40) NOT NULL,	login varchar(20) NOT NULL,	senha char(32) NOT NULL,	email varchar(64) default NULL,	PRIMARY KEY  (id_usuario),	UNIQUE KEY email (email)) TYPE = innodb;CREATE TABLE  noticias (	id_noticia INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,	titulo VARCHAR( 40 ) NOT NULL ,	fonte VARCHAR( 64 ) NOT NULL ,	conteudo VARCHAR( 250 ) NOT NULL ,	destaque ENUM( "s", "n" ) NOT NULL DEFAULT 'n',	fk_imagem int(11) unsigned NOT NULL, 	FOREIGN KEY (fk_imagem)	REFERENCES imagens(id_imagem)	ON UPDATE NO ACTION ON DELETE RESTRICT, 	data DATE NOT NULL,	UNIQUE KEY titulo (titulo)) TYPE = innodb;CREATE TABLE imagens (	id_imagem INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,	imagem VARCHAR( 64 ) NOT NULL) TYPE = innodb;CREATE TABLE noticias_setores (	id_noticia int(11) unsigned NOT NULL,	id_setor int(11) unsigned NOT NULL,	FOREIGN KEY (id_noticia)	REFERENCES noticias(id_noticia)	ON UPDATE NO ACTION ON DELETE CASCADE,	FOREIGN KEY (id_setor)	REFERENCES setores(id_setor)	ON UPDATE CASCADE ON DELETE RESTRICT, 	PRIMARY KEY  (id_noticia, id_setor)) TYPE = innodb;

Mensagens do MySQL : #1005 - Não pode criar a tabela './noticias/noticias.frm' (erro no. 150)

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu esse mesmo erro antes aqui.. tens que criar a tabela imagens antes da tabela noticiascomo te falei antes.. nessa sequência vai gerar erro concerteza!entendes? tais tentando criar a tabela noticias, referenciando o campo fk_imagem para a tabela imagem.id_imagem... mas essa tabela ainda não existe! tens que criar ela primeiro...se só isso não resolver.. tenta executar uma por uma... mas sempre na ordem

Compartilhar este post


Link para o post
Compartilhar em outros sites

:wacko:

tentei...

 

fiz primeiro essa:

CREATE TABLE imagens (	id_imagem INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,	imagem VARCHAR( 64 ) NOT NULL) TYPE = innodb;

depois fiz essa

CREATE TABLE setores (	id_setor INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,	setor VARCHAR( 64 ) NOT NULL) TYPE = innodb;

depois essa:

CREATE TABLE usuarios (	id_usuario int(11) unsigned NOT NULL auto_increment,	nome varchar(40) NOT NULL,	login varchar(20) NOT NULL,	senha char(32) NOT NULL,	email varchar(64) default NULL,	PRIMARY KEY  (id_usuario),	UNIQUE KEY email (email)) TYPE = innodb;

agora, no final faltando apenas noticias_setores e noticias eu nao consigo nenhuma das duas rs rs, ou devia ter criado a noticias_setores depois de setores?

 

Continua dando erro :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai ter que criar a tabela noticia_setores depois de noticias.. sendo que a de setores também já tem que estar criada... pois ela está se referenciando nessas duas!agora crie a de noticias... e depois a de noticias_setores... tem que funcionar!vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai ter que criar a tabela noticia_setores depois de noticias.. sendo que a de setores também já tem que estar criada... pois ela está se referenciando nessas duas!agora crie a de noticias... e depois a de noticias_setores... tem que funcionar!vlw

É...aqui na minha maquina local funcionou como você falou....la no servidor não......versão do phpmyadmin, influi????como faço pra saber a versão do mysql que esta rodando la???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo,me diga uma coisa,A versão influi ???verifiquei , e a versão do servidor, é o mysql4.0 , o fato de eu não estar conseguindo montar o banco como innodb, as juncoes, é por isso???ja tentei criar as tabelas simples primeiro, fazendo como o YeTiH indicou e local funciona, mas la no servidor não!!!alguma sugestão peloamordenossasenhora????

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim tem que ser mysql 5 mysql4 ate da mas é gambiarra nao tem integridade referencial

Novamente eu...eu vou ficar maluca.... :wacko: Olha só, fiz como foi sugerido aqui no forum, que eu instalasse o php/apache/mysql ao inves de usar os programas como o phpthriad, otimo, ta td funcionando...cadastrei o usuario q eu precisava...maravilha.....ok?agora..........me digam....pq cargas d'agua eu não consigo cadastrar NADA no banco???? nada, pois o usuario continua o mesmo, a senha idem, o banco idem, Eu tento tento tento e fica tudo em branco!!!! http://forum.imasters.com.br/public/style_emoticons/default/cry.gif http://forum.imasters.com.br/public/style_emoticons/default/cry.gif http://forum.imasters.com.br/public/style_emoticons/default/cry.gif http://forum.imasters.com.br/public/style_emoticons/default/cry.gif http://forum.imasters.com.br/public/style_emoticons/default/cry.gif http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá...mas com isso, mesmo nao tendo integridade referencial, eu tenho como utilizar a mesma estrutura de tabela para fazer as consultas e insercao de dados???meu prazo terminou, e hj preciso apresentar alguma coisa, e depois de ter visto esse problema com a versao do mysql, me perdi....Sem alteracao alguma, o banco parou, nao consigo inserir dado nenhum...a linha de insercao ta erra? podem verificar pra mim??segue codigo

[color=#3333FF]<?phpmysql_connect("localhost", "", "");mysql_select_db("noticias");mysql_query("INSERT INTO noticias VALUES ('', '$titulo', '$conteudo', '$fonte', '$data', '$fk_imagem', '$destaque')");?>[/color]

sim tem que ser mysql 5 mysql4 ate da mas é gambiarra nao tem integridade referencial

Compartilhar este post


Link para o post
Compartilhar em outros sites

Podem me dar um help nessa parte???

 

 

mas primeiro você precisa fazer o sistema de upload depois salvar na tabela imagens e pegar o id da imagem e salvar junto com o resto do formulario na tabela noticias

Me explica isso, não entendi, pirei :wacko:

 

 

esse sistema de upload, é aquele que você me mostrou ontem, certo?

eu vou usa-lo aparte? ou será incluido no formulario de cadastro de noticias?

 

 

ai ai ai..... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

ow fábyo não entendi você dizer que tem que ser mysql 5 pra funcionar isso.. pois você disse que era só ter suporte a InnoDB...e eu fiz no mysql 4.1.14 e também em mysql 3.23.58....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Patricia.. você precisa fazer uma rotina pra enviar as fotos pro servidor e cadastrá-las no banco de dados.

Acredito que tenha que ser feito a parte pois o tipo de encriptação é diferente de textos. Daí você envia a imagem pro servidor, cadastra na tabela de imagens, e referencia o id na tabela de noticias.

 

á, e na dúvida anterior.. o nome do banco de dados é noticias mesmo?

mysql_select_db("noticias");

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.