복붙노트

[SQL] MySQL의에서 기본 키를 제거

SQL

MySQL의에서 기본 키를 제거

나는 라이브 MySQL 데이터베이스에 대한 사용 권한에 user_customers 매핑 다음과 같은 테이블 스키마를 가지고 :

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

어떻게 열 기본 키를 삭제할 수 있습니까?

해결법

  1. ==============================

    1.인덱스이 제공되지 않을 경우 자동 증가 열을 유지하는 것은 MySQL이 인덱스의 왼쪽 부분으로서 자동 증가 컬럼을 필요로 그 이유는, 너무 비싸진다.

    인덱스이 제공되지 않을 경우 자동 증가 열을 유지하는 것은 MySQL이 인덱스의 왼쪽 부분으로서 자동 증가 컬럼을 필요로 그 이유는, 너무 비싸진다.

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

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

    모든 세 개의 열을 포함하고 ID가 고유 보장되지 않습니다 복합 기본 키가 있습니다.

    이 고유하게 발생하는 경우, 당신은 다시 PRIMARY KEY와 AUTO_INCREMENT 할 수 있습니다 :

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

    2.한 줄:

    한 줄:

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

    당신은 또한 자동 증가를 잃고 할 필요가 없습니다 부작용을 미칠 수있는 그것을 다시 추가.

  3. ==============================

    3.나는 Quassnoi이 직접 질문에 대답하고있다 생각합니다. 그냥 보조 노트 : 어쩌면이 당신의 부분에 좀 어색한 표현이지만, 당신은 세 가지 기본 키, 각 필드에 하나를 가지고 있다는 인상을 것 같다. 그렇지 않다. 정의함으로써, 당신은 하나의 기본 키를 가질 수 있습니다. 당신이 여기있는 세 가지 분야의 복합 인 기본 키입니다. 따라서, 당신은 "열에 기본 키를 삭제할 수 없습니다". 당신은 기본 키를 떨어 뜨리거나 기본 키를 삭제할 수 없습니다. 당신은 단지 하나 개의 컬럼을 포함하는 기본 키를 원하는 경우에, 당신은 3 열을 기존의 기본 키를 삭제하고 1 열에서 새로운 기본 키를 만들 수 있습니다.

    나는 Quassnoi이 직접 질문에 대답하고있다 생각합니다. 그냥 보조 노트 : 어쩌면이 당신의 부분에 좀 어색한 표현이지만, 당신은 세 가지 기본 키, 각 필드에 하나를 가지고 있다는 인상을 것 같다. 그렇지 않다. 정의함으로써, 당신은 하나의 기본 키를 가질 수 있습니다. 당신이 여기있는 세 가지 분야의 복합 인 기본 키입니다. 따라서, 당신은 "열에 기본 키를 삭제할 수 없습니다". 당신은 기본 키를 떨어 뜨리거나 기본 키를 삭제할 수 없습니다. 당신은 단지 하나 개의 컬럼을 포함하는 기본 키를 원하는 경우에, 당신은 3 열을 기존의 기본 키를 삭제하고 1 열에서 새로운 기본 키를 만들 수 있습니다.

  4. ==============================

    4.

    ALTER TABLE `user_customer_permission` MODIFY `id` INT;
    ALTER TABLE `user_customer_permission` DROP PRIMARY KEY;
    
  5. ==============================

    5.혹시 this- ALTER의 table_name 테이블 DROP PRIMARY KEY, PRIMARY KEY (col_name1, col_name2)를 추가 좋아해요, 복합 기본 키가;

    혹시 this- ALTER의 table_name 테이블 DROP PRIMARY KEY, PRIMARY KEY (col_name1, col_name2)를 추가 좋아해요, 복합 기본 키가;

  6. ==============================

    6."당신은 기본 키를 복원하는 경우, 당신은 반드시 다시 AUTO_INCREMENT로 다시 되돌아 갈 수 있습니다"

    "당신은 기본 키를 복원하는 경우, 당신은 반드시 다시 AUTO_INCREMENT로 다시 되돌아 갈 수 있습니다"

    "는 PK 속성을 복원"및 ID 열 "는 자동 증가 속성을 복원"하는 것이 바람직하다 여부에 의심이 없어야합니다.

    이 테이블의 사전 정의의 자동 증가되었음을 감안할 때, 그것은 매우 가능성이 일부 프로그램이 존재한다는 것입니다 그 ID 값 (ID 열에이기 때문에 자동 증가 어쨌든)를 제공하지 않고이 테이블에 삽입합니다.

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

  7. ==============================

    7.먼저이 같은 AUTO_INCREMENT 필드를 제거하기 위해 열을 수정합니다 테이블 변경 user_customer_permission 수정 열 아이디 INT;

    먼저이 같은 AUTO_INCREMENT 필드를 제거하기 위해 열을 수정합니다 테이블 변경 user_customer_permission 수정 열 아이디 INT;

    다음으로, 기본 키를 놓습니다. 테이블 변경 user_customer_permission 기본 키를 삭제;

  8. ==============================

    8.

    ALTER TABLE `table_name` ADD PRIMARY KEY( `column_name`);
    
  9. ==============================

    9.나는 같은 문제가 내 테이블 내 옆에 어떤 값을했다. 나는 내 기본 키를 변경하더라도

    나는 같은 문제가 내 테이블 내 옆에 어떤 값을했다. 나는 내 기본 키를 변경하더라도

    ALTER TABLEuser_customer_permissionDROP PRIMARY KEY, ADD PRIMARY KEY (ID)

    문제는 내 서버에 계속했다. 나는 새로운 필드에 값을 전송하고 이전을 삭제 한 표 안에 새 필드를 생성, 문제가 해결!

  10. ==============================

    10.열에 기본 키를 추가합니다.

    열에 기본 키를 추가합니다.

    ALTER TABLE table_name ADD PRIMARY KEY (column_name);
    

    테이블에서 기본 키를 제거하십시오.

    ALTER TABLE table_name DROP PRIMARY KEY;
    
  11. ==============================

    11.첫 번째 백업 데이터베이스. 그런 다음 테이블과 연관된 모든 외부 키를 놓습니다. 외래 키 table.Truncate에게 현재 테이블을 자릅니다. 필요한 기본 키를 제거합니다. 사용 SQLyog에 또는 작업대 또는 heidisql 또는 dbeaver 또는 phpMyAdmin을.

    첫 번째 백업 데이터베이스. 그런 다음 테이블과 연관된 모든 외부 키를 놓습니다. 외래 키 table.Truncate에게 현재 테이블을 자릅니다. 필요한 기본 키를 제거합니다. 사용 SQLyog에 또는 작업대 또는 heidisql 또는 dbeaver 또는 phpMyAdmin을.

  12. ==============================

    12.SQL 관리자에서 테이블을 찾아 바로 그때 오른쪽 작은 키 아이콘을 클릭하고 기본 키를 제거 선택을 클릭하고 디자인을 선택합니다.

    SQL 관리자에서 테이블을 찾아 바로 그때 오른쪽 작은 키 아이콘을 클릭하고 기본 키를 제거 선택을 클릭하고 디자인을 선택합니다.

  13. from https://stackoverflow.com/questions/2111291/remove-primary-key-in-mysql by cc-by-sa and MIT license