본문 바로가기
MySql

MySQL에서 기본 키 제거

by 베이스 공부 2020. 12. 13.
반응형

user_customers를 라이브 MySQL 데이터베이스의 권한에 매핑하는 다음 테이블 스키마가 있습니다.

mysql> describe user_customer_permission;
+------------------+---------+------+-----+---------+----------------+
| Field            | Type    | Null | Key | Default | Extra          |
+------------------+---------+------+-----+---------+----------------+
| id               | int(11) | NO   | PRI | NULL    | auto_increment |
| user_customer_id | int(11) | NO   | PRI | NULL    |                |
| permission_id    | int(11) | NO   | PRI | NULL    |                |
+------------------+---------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

user_customer_id 및 permission_id에 대한 기본 키를 제거하고 id에 대한 기본 키를 유지하고 싶습니다.

명령을 실행할 때 :

alter table user_customer_permission drop primary key;

다음과 같은 오류가 발생합니다.

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

열 기본 키를 삭제하려면 어떻게해야합니까?

 

해결 방법

 

인덱스가 없으면 자동 증가 열을 유지하는 데 너무 많은 비용이 들기 때문에 MySQL 에서는 자동 증가 열이 인덱스의 가장 왼쪽 부분이되도록 요구합니다.

키를 삭제하기 전에 autoincrement 속성을 제거해야합니다.

ALTER TABLE user_customer_permission MODIFY id INT NOT NULL;
ALTER TABLE user_customer_permission DROP PRIMARY KEY;

세 열을 모두 포함하는 복합 PRIMARY KEY 가 있으며 id 가 고유하지 않을 수도 있습니다.

고유 한 경우 다시 PRIMARY KEY AUTO_INCREMENT 로 만들 수 있습니다.

ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;

 

참조 페이지 https://stackoverflow.com/questions/2111291

 

 

반응형

댓글