Olá pessoal. Bom, não sei se estou no fórum correto, pensei em postar no Persistência: Hibernate, JPA, JDBC e outros mas, acho q é aqui mesmo.
Seguinte. Tenho uma tabela que estou tentando criar porém dá erro no Workbench MySQL. Nessa tabela quero criar 2 colunas que são PK e FK e uma outra q "é dela mesmo", ou seja, cada coluna q estou definindo como PK é o sequence de outras tabelas.
Tenho a tabA e a tabB e estou tentano criar a pontuacao_tabA_tabB que contém o id(sequence) de cada uma delas.
Acho q com o código vcs vão entender o que digo:
Dê uma olhada nas outras tabelas, se as constraints não estão com o mesmo nome, ou se as chaves tem o mesmo nome, veja esse erro siginifica:
MySQL error code 121: Duplicate key on write or update
Ou seja, ele esta dizendo que existe uma chave duplicada
ribclauport
Rodei os fontes abaixo no mesmo ambiente que o seu e funcionou normalmente segue:
'CREATE TABLE `taba` ( `idtabA` int(11) NOT NULL, `descA` varchar(45) DEFAULT NULL, PRIMARY KEY (`idtabA`)) ENGINE=InnoDB DEFAULT CHARSET=latin1''CREATE TABLE `tabb` ( `idtabb` int(11) NOT NULL, `descB` varchar(45) DEFAULT NULL, PRIMARY KEY (`idtabb`)) ENGINE=InnoDB DEFAULT CHARSET=latin1''CREATE TABLE `pontuacao_taba_tabb` ( `idtabA` int(11) NOT NULL, `idtabB` int(11) NOT NULL, `ptTotal` varchar(45) NOT NULL, PRIMARY KEY (`idtabA`,`idtabB`), KEY `fk_idtabA_idx` (`idtabA`), KEY `fk_idtabB_idx` (`idtabB`), CONSTRAINT `fk_idtabA` FOREIGN KEY (`idtabA`) REFERENCES `taba` (`idtabA`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_idtabB` FOREIGN KEY (`idtabB`) REFERENCES `tabb` (`idtabb`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1'
P
Prates
ribclauport:
Rodei os fontes abaixo no mesmo ambiente que o seu e funcionou normalmente segue:
'CREATE TABLE `taba` ( `idtabA` int(11) NOT NULL, `descA` varchar(45) DEFAULT NULL, PRIMARY KEY (`idtabA`)) ENGINE=InnoDB DEFAULT CHARSET=latin1''CREATE TABLE `tabb` ( `idtabb` int(11) NOT NULL, `descB` varchar(45) DEFAULT NULL, PRIMARY KEY (`idtabb`)) ENGINE=InnoDB DEFAULT CHARSET=latin1''CREATE TABLE `pontuacao_taba_tabb` ( `idtabA` int(11) NOT NULL, `idtabB` int(11) NOT NULL, `ptTotal` varchar(45) NOT NULL, PRIMARY KEY (`idtabA`,`idtabB`), KEY `fk_idtabA_idx` (`idtabA`), KEY `fk_idtabB_idx` (`idtabB`), CONSTRAINT `fk_idtabA` FOREIGN KEY (`idtabA`) REFERENCES `taba` (`idtabA`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_idtabB` FOREIGN KEY (`idtabB`) REFERENCES `tabb` (`idtabb`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1'
Obrigado ribclauport, É isso mesmo que você disse. Eu criei as tabelas novamente e padronizei os nomes das constraint, index, fk e pk pelo padrão SQL que pesquisei na internet. Eu também criei uma tabela, somente depois de criada que adicionei as FK, uma de cada vez e rodou.