[RESOLVIDO]Chave composta MySQL

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:

[code]CREATE TABLE aulaPKFK.pontuacao_tabA_tabB (

idtabA INT NOT NULL ,

idtabB INT NOT NULL ,

ptTotal VARCHAR(45) NOT NULL ,

PRIMARY KEY (idtabA, idtabB) ,

INDEX fk_idtabA_idx (idtabA ASC) ,

INDEX fk_idtabB_idx (idtabB ASC) ,

CONSTRAINT fk_idtabA

FOREIGN KEY (`idtabA` )

REFERENCES `aulaPKFK`.`tabA` (`idtabA` )

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT fk_idtabB

FOREIGN KEY (`idtabB` )

REFERENCES `aulaPKFK`.`tabB` (`idtabB` )

ON DELETE CASCADE

ON UPDATE CASCADE)

ENGINE = InnoDB;[/code]

O erro é simplesmente isso que aparece

ERROR 1005: Can't create table 'aulaPKFK.pontuacao_tabA_tabB' (errno: 121)

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

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'

[quote=ribclauport]Rodei os fontes abaixo no mesmo ambiente que o seu e funcionou normalmente segue:

[code]

‘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’
[/code][/quote]

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.