반응형
내 테이블은 다음과 같습니다.
CREATE TABLE `alums_alumphoto` (
`id` int(11) NOT NULL auto_increment,
`alum_id` int(11) NOT NULL,
`photo_id` int(11) default NULL,
`media_id` int(11) default NULL,
`updated` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `alums_alumphoto_alum_id` (`alum_id`),
KEY `alums_alumphoto_photo_id` (`photo_id`),
KEY `alums_alumphoto_media_id` (`media_id`),
CONSTRAINT `alums_alumphoto_ibfk_1` FOREIGN KEY (`media_id`) REFERENCES `media_mediaitem` (`id`),
CONSTRAINT `alum_id_refs_id_706915ea` FOREIGN KEY (`alum_id`) REFERENCES `alums_alum` (`id`),
CONSTRAINT `photo_id_refs_id_63282119` FOREIGN KEY (`photo_id`) REFERENCES `media_mediaitem` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8
photo_id
열을 삭제하고 싶습니다. 아마도 외래 키 제약 조건과 인덱스를 삭제해야 할 것입니다.
문제는 열을 삭제하려고 할 때 오류가 발생한다는 것입니다.
... 인덱스를 삭제하려고 할 때 (위와 동일) 외래 키 제약 조건을 삭제하려고 할 때 :
이 모든 것을 어떤 순서로해야합니까? 어떤 정확한 명령을 사용해야합니까?
해결 방법
확실한 것은 중복 테이블을 만드는 것입니다.
> CREATE TABLE alums_alumphoto_new LIKE alums_alumphoto;
> ALTER TABLE .... // Drop constraint
> ALTER TABLE .... // Drop KEY
> ALTER TABLE .... // Drop the column
> INSERT INTO alums_alumphoto_new (SELECT id, alum_id, photo_id, media_id, updated FROM alums_alumphoto);
> RENAME TABLE alums_alumphoto TO alums_alumphoto_old, alums_alumphoto_new TO alums_alumphoto;
RENAME TABLE을 실행하는 중에 오류가 발생하면 일부 다른 테이블에이 테이블을 참조하는 외래 키 제약 조건이있을 수 있습니다.이 경우 전체 접근 방식은 어리 석습니다. :)
참조 페이지 https://stackoverflow.com/questions/338978
반응형
'MySql' 카테고리의 다른 글
MySQL WordPress MediaWiki integration (0) | 2020.11.15 |
---|---|
MySQL How to get output from NodeRed Mysql node (0) | 2020.11.15 |
MySQL 암호화에 대한 모범 사례? (0) | 2020.11.15 |
MySQL 이벤트에 여러 쿼리를 작성할 수 있습니까? (0) | 2020.11.15 |
MySQL 대소 문자를 구분하도록 Mysql 테이블 열 변경 (0) | 2020.11.15 |
댓글