오류

2013-05-31 5 views
1

나는 다음과 같은 SQL 명령을 실행하면 :오류

CREATE TABLE `TableA` (
    `tableAId` INT(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`tableAId`) 
); 

CREATE TABLE `TableB` (
    `tableBId` INT(11) NOT NULL AUTO_INCREMENT, 
    `tableAId` INT(11) DEFAULT NULL, 
    PRIMARY KEY (`tableBId`), 
    CONSTRAINT `FK_TABLE_A_ID` FOREIGN KEY (`tableAId`) REFERENCES `TableA` (`tableAId`) 
); 

ALTER TABLE `TableB` 
    RENAME TO `NewTableB`; 

ALTER TABLE `TableA` 
    RENAME TO `NewTableA`, 
    CHANGE COLUMN `tableAId` `newTableAId` INT(11) NOT NULL AUTO_INCREMENT FIRST; 

DROP TABLE IF EXISTS NewTableA; 

DROP TABLE IF EXISTS NewTableB; 

CREATE TABLE `TableA` (
    `tableAId` INT(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`tableAId`) 
); 

나는이 마지막 명령 (즉, CREATE TABLE TableA (...))에 다음과 같은 오류 :

Erreur SQL (1005) : 'TableA'테이블을 만들 수 없습니다. (errno : 150) Foreign 키 제약 조건이 잘못 형성되었습니다.

55,164,923,내가 가진 :

------------------------ 
LATEST FOREIGN KEY ERROR 
------------------------ 
130531 12:06:05 Error in foreign key constraint of table TableB: 
there is no index in referenced table which would contain 
the columns as the first columns, or the data types in the 
referenced table do not match the ones in table. Constraint: 
, 
    CONSTRAINT `FK_TABLE_A_ID` FOREIGN KEY (`tableAId`) REFERENCES `NewTableA` (`tableAId`) 
+0

없는 별도의 쿼리에서 이름 바꾸기 테이블과'TableA의의 이름 바꾸기 열을 실행하려고해야 '? – Stephan

+1

나에게 버그가있는 것 같습니다. 5.1.46에서 잘 돌아갑니다. MySQL 버그 추적기를 확인 했습니까? (http://bugs.mysql.com) –

+0

예를 들어, 아마도이 버그와 관련이 있습니다 : http://bugs.mysql.com/bug.php?id=64922 –

답변

0

오래된 질문을하지만, 비슷한 상황에있는 다른 사람에 대한 대답은 내가에서 만든 :

https://dba.stackexchange.com/a/87587/56052

가 도움이 될 수 있습니다.

  • 이전과 동일한 외래 키 사양이지만 다른 이름으로 테이블을 재 작성하십시오.
  • 는 원본 또는 함께
  • 재 작성 테이블 (도 원래 고아 외래 키를 삭제합니다) 결과 테이블을 삭제 더 외래 키