MySQL 오류 121
MySQL 생성에서 이 오류가 발생합니다.저는 하고 있어요.
CREATE TABLE `blogReply` (
`Id` INT(24) NOT NULL AUTO_INCREMENT COMMENT 'Primary Key of This Table',
`blogId` INT(24) NOT NULL COMMENT 'Blog where this reply was posted',
`userId` INT(24) NULL COMMENT 'User the blog was posted by',
`name` VARCHAR(100) NULL DEFAULT 'Unknown' COMMENT 'The Name of the user that the reply was posted by',
`email` VARCHAR(100) NULL DEFAULT 'Unknown' COMMENT 'The Email of the user that the reply was posted by',
`http` VARCHAR(300) NULL DEFAULT 'Unknown' COMMENT 'The Webaddress of the user that the reply was posted by',
`message` TEXT NOT NULL COMMENT 'text of the blog',
`votes` INT(10) DEFAULT 0 COMMENT 'Rating of the Blog',
`ratedBy` TEXT COMMENT 'People who have already Voted on this blog',
`dateReg` BIGINT NOT NULL COMMENT 'Date the User was Registered',
PRIMARY KEY (`Id`),
CONSTRAINT `FK_userId` FOREIGN KEY(`userId`)
REFERENCES `user` (`Id`)
ON DELETE SET NULL
ON UPDATE CASCADE,
CONSTRAINT `FK_blogId` FOREIGN KEY(`blogId`)
REFERENCES `blog` (`Id`)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE = InnoDB;
좋은 생각 있어요?오류 상태:Can't create table './xxxxxxxx/blogReply.frm' (errno: 121)
모든 제약 조건의 철자가 정확한지 확인하고 제약 조건 이름 FK_userId 또는 FK_blogId를 사용하는 다른 테이블이 없는지 확인합니다.
오류 121은 외부 키 제약 문제입니다.첫 번째로 확인해야 할 사항은 외부 키 정의가 정상인지 여부입니다(모든 테이블 및 필드 이름이 정확합니다 등).
다음과 같이 테이블을 만들기 전에 외부 키 검사를 비활성화할 수 있습니다.
SET FOREIGN_KEY_CHECKS = 0;
이는 나중에 키 검사를 다시 활성화(1로 설정)할 때 오류가 발생한다는 단점이 있지만, 이 경우 외부 키 생성에 방해가 되는 잘못된 레코드가 어딘가에 있음을 의미합니다.
그러나 데이터베이스 파일을 수동으로 이동한 경우(예: 물리적 이름 변경)에도 이 문제가 발생할 수 있습니다.data/your_database_name디렉토리 입니다.InnoDB는 그와 같은 물리적 변화를 테이블 공간과 연관시킬 수 없기 때문에 내부와 혼동됩니다.
이 작업을 수행한 경우 가장 효과적인 솔루션은 이전 데이터베이스를 원래 위치로 이동하여 덤프 또는 내보내기를 수행하는 것입니다.DROP DATABASEimporting을 다시 하기 전에 그 위에.
당신이 작성중인 외국키가 참조된 테이블열로 데이터타입 등 모든 면에서 동일한지 확인해주시기 바랍니다.각 외부 키 이름은 해당 이름이 생성된 테이블에 대해 고유해야 하며 다른 테이블에서는 사용할 수 없습니다.위 문제에 대해 "FK_userId"라는 외부 키 이름을 다른 테이블에 사용해서는 안 됩니다.
나는 mysql 5.5에서 이 문제가 있지만 mysql 5.6에서는 잘 작동합니다.제약 조건 이름이 고유한 것처럼 보이지만 이 이름이 긴 이름이고 잘린 경우 다음과 같이 고유하지 않게 됩니다.
long_constraint_name_1,long_constraint_name_2될 수도 있습니다long_constraint_name_
언급URL : https://stackoverflow.com/questions/1180660/mysql-errorno-121
'programing' 카테고리의 다른 글
| EF 6 및 Oracle을 사용하는 동안 테이블이 존재하지 않습니다.관리 데이터 액세스 (0) | 2023.10.21 |
|---|---|
| 스프링 최대 절전 모드가 있는 시퀀스에서 다음 값 가져오기 (0) | 2023.10.21 |
| 이 알고리즘이 선형입니까? (0) | 2023.10.16 |
| 블레이저에서 상자 바인딩 선택 (0) | 2023.10.16 |
| 도커 컨테이너 내부에서 기기의 로컬 호스트에 연결하려면 어떻게 해야 합니까? (0) | 2023.10.16 |