Jump to content

Can't write - duplicate key in table 'fotoevento' - MySQL


Recommended Posts

Posted

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...

Posted

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.

Posted

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

Posted

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/

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.