Programming

MySQL에서 기본 키 제거

procodes 2020. 5. 25. 22:30
반응형

MySQL에서 기본 키 제거


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자동 증분 열이 인덱스의 가장 왼쪽 부분이어야합니다.

키를 삭제하기 전에 자동 증가 속성을 제거해야합니다.

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

PRIMARY KEY세 개의 열을 모두 포함하는 id고유 한 복합 재료가 있다는 점에 유의하십시오 .

이 고유하게 발생하는 경우, 당신은이 될 수 있습니다 PRIMARY KEYAUTO_INCREMENT다시 :

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

한 줄:

ALTER TABLE  `user_customer_permission` DROP PRIMARY KEY , ADD PRIMARY KEY (  `id` )

또한 자동 증분을 잃지 않고 부작용을 일으킬 수있는 자동 증분을 다시 추가해야합니다.


Quassnoi가 귀하의 직접적인 질문에 답변했다고 생각합니다. 참고 사항 : 어쩌면 이것은 어색한 표현 일 수도 있지만 각 필드에 하나씩 기본 키가 세 개 있다는 인상을 받고있는 것 같습니다. 그렇지 않다. 기본적으로 하나의 기본 키만 가질 수 있습니다. 여기에있는 것은 세 개의 필드로 구성된 기본 키입니다. 따라서 "열에 기본 키를 놓을 수 없습니다". 기본 키를 삭제하거나 기본 키를 삭제하지 않을 수 있습니다. 하나의 열만 포함하는 기본 키를 원하는 경우 기존 기본 키를 3 개의 열에 드롭하고 1 개의 열에 새 기본 키를 만들 수 있습니다.


ALTER TABLE `user_customer_permission` MODIFY `id` INT;
ALTER TABLE `user_customer_permission` DROP PRIMARY KEY;

복합 기본 키가있는 경우 다음과 같이하십시오. ALTER TABLE table_name DROP PRIMARY KEY,ADD PRIMARY KEY (col_name1, col_name2);


"기본 키를 복원하면 AUTO_INCREMENT로 되돌릴 수 있습니다."

ID 열의 "PK 속성 복원"및 "자동 증가 속성 복원"이 바람직한 지 여부는 의심의 여지가 없습니다.

테이블의 사전 정의에서 자동 증가가 있었으므로 ID 값을 제공하지 않고이 테이블에 삽입하는 일부 프로그램이있을 가능성이 높습니다 (ID 열은 자동 증가이므로).

자동 증가 속성을 복원하지 않으면 이러한 프로그램의 작동이 중단됩니다.


먼저 다음과 같이 auto_increment 필드를 제거하도록 열을 수정하십시오. alter table user_customer_permission modify column id int;

그런 다음 기본 키를 삭제하십시오. 테이블 user_customer_permission 삭제 기본 키를 변경하십시오.


나는 같은 문제가 있었고 내 테이블 내부의 일부 값 옆에 있었다. 기본 키를

ALTER TABLEuser_customer_permission DROP PRIMARY KEY , ADD PRIMARY KEY (ID)

서버에서 문제가 계속되었습니다. 테이블 안에 새 필드를 만들었고 값을 새 필드로 옮기고 이전 필드를 삭제했는데 문제가 해결되었습니다 !!


먼저 데이터베이스를 백업하십시오. 그런 다음 테이블과 관련된 외래 키를 삭제하십시오. 외래 키 테이블을 자릅니다. 현재 테이블을 자릅니다. 필요한 기본 키를 제거하십시오. sqlyog 또는 워크 벤치 또는 heidisql 또는 dbeaver 또는 phpmyadmin을 사용하십시오.


SQL 관리자에서 테이블을 찾아 마우스 오른쪽 단추로 클릭하고 디자인을 선택한 다음 작은 키 아이콘을 마우스 오른쪽 단추로 클릭하고 기본 키 제거를 선택하십시오.


열에 기본 키 추가 합니다.

ALTER TABLE table_name ADD PRIMARY KEY (column_name);

테이블에서 기본 키 제거 합니다.

ALTER TABLE table_name DROP PRIMARY KEY;

참고 URL : https://stackoverflow.com/questions/2111291/remove-primary-key-in-mysql

반응형