PetaByte Posted February 8, 2014 at 10:13 PM Report #544492 Posted February 8, 2014 at 10:13 PM Boa Noite, Fiz o modelo de dados no MySQL WorkBench e ao abrir o ficheiro no phpmyadmin, dá-me o erro: #1022 - Can't write; duplicate key in table 'fotoevento' . Comando SQL: -- ----------------------------------------------------- -- Table `CCM`.`FotoEvento` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `CCM`.`FotoEvento` ( `ID` INT( 50 ) NOT NULL AUTO_INCREMENT , `IdEvento` INT NOT NULL , `Url` VARCHAR( 200 ) NOT NULL , `Descricao` VARCHAR( 200 ) NOT NULL , `Data` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `Autor` VARCHAR( 200 ) NOT NULL , `Posicao` INT( 20 ) NOT NULL DEFAULT 0, PRIMARY KEY ( `ID` , `IdEvento` ) , INDEX `ID_idx` ( `IdEvento` ASC ) , CONSTRAINT `ID` FOREIGN KEY ( `IdEvento` ) REFERENCES `CCM`.`Evento` (`ID` ) ON DELETE NO ACTION ON UPDATE NO ACTION )ENGINE=INNODB; Mensagens do MySQL : #1022 - Can't write; duplicate key in table 'fotoevento' Alguma ideia qual seja o problema? A meu ver está tudo bem...
Rechousa Posted February 8, 2014 at 11:00 PM Report #544499 Posted February 8, 2014 at 11:00 PM Olá, O problema está no facto de estares a colocar o índice ID_IDX no campo IDEvento e não no ID. Funciona bem se tiveres apenas uma foto por evento, mas se tiveres mais do que uma vais ter o problema de chave duplicada. Espero ter ajudado, Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa
PetaByte Posted February 8, 2014 at 11:37 PM Author Report #544503 Posted February 8, 2014 at 11:37 PM Olá, Antes de mais, obrigado pela ajuda! 🙂 . Mudei para ID , continuou. Apaguei a linha e continua o problema. Só se o problema é das chaves estrangeiras... 😕 Tirei as relações, mas continua. Se remover a tabela por completo, dá. Isto acontece com outra tabela igual, mas com outro nome. Penso que não seja das chaves, porque tenho tabelas com 2 chaves. http://pastebin.com/bXAUB0jL . Está aqui o ficheiro completo, de origem. Poderá ser de outra coisa ? HbHShG3.png -> Também poderei ter algo errado no diagrama.
Rechousa Posted February 9, 2014 at 02:54 AM Report #544510 Posted February 9, 2014 at 02:54 AM Olá, Parece-me que tens alguns problemas nas tuas chaves primárias. Porque razão tens como chave primária na tabela Socio os campos ID e Matricula? Pelo que percebi esta tabela guarda os dados de uma pessoa e, se um sócio tiver duas matrículas [nao sei se faz sentido ou nao] vais ter de preencher os mesmos dados duas vezes - o que é errado do ponto de vista de arquitetura de BD's. Na tabela Quota tens o mesmo problema. Ou tens o campo ID como chave ou removes o ID e tens como chave IDSocio e ano. Podes explicar um pouco o propósito da tua BD? Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa
PetaByte Posted February 9, 2014 at 01:25 PM Author Report #544529 Posted February 9, 2014 at 01:25 PM Olá, O motivo de ter 2 chaves primárias em algumas tabelas é porque uma é chave primária e outra chave estrangeira. Mas reflectindo bem... as chaves estrangeiras não se coloca como primária, correcto? A BD é para um projecto de um clube de automóveis. Cada sócio tem 0 ou mais carros, podem participar nos eventos e pagam quotas anualmente. A BD irá permitir ver os carros de X sócio, ver se tem as quotas em dia e quais foram os eventos que participou. Edit: Tirei as chaves estrangeiras como primárias... mas no entanto, continuo com o problema Comando SQL: -- ----------------------------------------------------- -- Table `CCM`.`FotoEvento` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `CCM`.`FotoEvento` ( `ID` INT( 50 ) NOT NULL AUTO_INCREMENT , `IDEvento` INT NOT NULL , `Url` VARCHAR( 200 ) NOT NULL , `Descricao` VARCHAR( 200 ) NOT NULL , `Data` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `Autor` VARCHAR( 200 ) NOT NULL , `Posicao` INT( 20 ) NOT NULL DEFAULT 0, PRIMARY KEY ( `ID` ) , INDEX `ID_idx` ( `IDEvento` ASC ) , CONSTRAINT `ID` FOREIGN KEY ( `IDEvento` ) REFERENCES `CCM`.`Evento` ( `ID` ) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE = INNODB; Mensagens do MySQL : #1022 - Can't write; duplicate key in table 'fotoevento' Não estou a ver de onde seja o problema. http://pastebin.com/7EgXUggN Diagrama: https://meocloud.pt/link/48fafc5d-50bc-4bc8-b905-136c45facb71/CCM.mwb/
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now