source

MySQL에서 AUTO_INCREMENT를 리셋하는 방법

bestscript 2022. 11. 1. 21:40

MySQL에서 AUTO_INCREMENT를 리셋하는 방법

리셋하려면 어떻게 해야 합니다.AUTO_INCREMENT★★★★★★★★★★★★★★★★★?

나는 그것을 세어보고 싶다.1

다음과 같이 카운터를 재설정할 수 있습니다.

ALTER TABLE tablename AUTO_INCREMENT = 1

InnoDB의 경우auto_increment최고 전류 지수보다 작거나 같은 값입니다.(ViralPatel에서 인용):

카운터를 이미 사용된 값 이하의 값으로 리셋할 수 없습니다.MyISAM의 경우 값이 AUTO_INCREMENT 컬럼의 현재 최대값 이하일 경우 현재 최대값 +1로 리셋됩니다.InnoDB의 경우 컬럼의 현재 최대값보다 작을 경우 오류가 발생하지 않으며 현재 시퀀스 값은 변경되지 않습니다.

자세한 내용은 다른 테이블의 MAX 값을 사용하여 MySQL AutoIncrement를 재설정하는 방법을 참조하십시오.허용 가능한 값을 동적으로 얻는 방법에 대해 설명합니다.

SET  @num := 0;

UPDATE your_table SET id = @num := (@num+1);

ALTER TABLE your_table AUTO_INCREMENT =1;

간단하게 다음과 같습니다.

ALTER TABLE tablename AUTO_INCREMENT = value;

참조: 13.1.9 ALTER TABLE 스테이트먼트

여기에 이미지 설명을 입력하십시오.

"operations" 탭 아래에 phpMyAdmin을 사용하면 매우 쉬운 방법이 있습니다.테이블 옵션에서 원하는 수로 자동 증가를 설정할 수 있습니다.

나에게 가장 효과적인 솔루션:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;

빠르고 InnoDB와 연동되어 현재 최대값을 알 필요가 없습니다!

이렇게 하면 자동 증분 카운터가 재설정되고 존재하는 최대값에서 자동으로 시작됩니다.

'ALTER yourtable AUTO_INCREMENT= value'라고 합니다.이 은 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 이렇게 되는 예요.value자동 증가 열의 현재 최대값보다 큽니다.MySQL 8 설명서에 따르면:

카운터를 현재 사용 중인 값 이하의 값으로 리셋할 수 없습니다.InnoDB와 MyISAM의 경우 값이 현재 AUTO_INCREMENT 열의 최대값 이하일 경우 현재 최대 AUTO_INCREMENT 열 값에 1을 더한 값으로 리셋됩니다.

기본적으로 AUTO_INCREMENT만 변경하여 자동 증가 열의 값을 늘릴 수 있으며, OP가 질문의 두 번째 부분에서 요구하는 대로 1로 재설정할 수 없습니다.AUTO_INCREMENT를 현재 최대값에서 아래로 설정할 수 있는 옵션에 대해서는 Reorder / reset auto increment 프라이머리 키를 참조하십시오.

MySQL 5.6부터는 InnoDB와 함께 간단한 ALTER TABLE을 사용할 수 있습니다.

ALTER TABLE tablename AUTO_INCREMENT = 1;

이 내용을 반영하기 위해 매뉴얼이 갱신되었습니다.

13.1.7 ALTER TABLE 스테이트먼트

테스트 결과 테이블이 복사되지 않았습니다.값은 단순하게 변경됩니다.

TRUNCATE TABLE your_table 있는 모든 것을 삭제합니다.your_table.

, 구문도 할 수 .TRUNCATE츠키다

TRUNCATE TABLE table_name
ALTER TABLE news_feed DROP id

ALTER TABLE news_feed ADD  id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

이걸 대본에 썼거든요.id 필드가 드롭된 후 이전 설정으로 다시 추가됩니다.데이터베이스 테이블 내의 기존 필드는 모두 새로운 자동 증분 값으로 채워집니다.InnoDB에서도 동작합니다.

테이블 내의 모든 필드가 재검표되고 다른 ID가 표시됩니다.

빈 테이블용:

ALTER TABLE `table_name` AUTO_INCREMENT = 1;

데이터가 있지만 정리하려면 다음을 사용하는 것이 좋습니다.

ALTER TABLE `table_name` DROP `auto_colmn`;
ALTER TABLE `table_name` ADD  `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`);

경고:열에 제약이 있거나 다른 테이블에 외부 키로 연결된 경우 좋지 않은 영향을 미칩니다.

먼저 다음 열을 놓습니다.

ALTER TABLE tbl_name DROP COLUMN column_id

그런 다음 열을 다시 만들고 FIRST로 설정합니다(첫 번째 열로 사용할 경우).

ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST

MySQL 5.6에서는 온라인 DDL로 인해 다음 접근 방식이 더 빠르게 작동합니다(참고).algorithm=inplace

alter table tablename auto_increment=1, algorithm=inplace;

최신 ID와 하나의 ID로 업데이트하려면:

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);

편집:

SET @latestId = SELECT MAX(id) FROM table_name;
SET @nextId = @latestId + 1;
ALTER TABLE table_name AUTO_INCREMENT = @nextId;

테스트되지 않았습니다.실행 전에 테스트해주세요*

SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;

다음 쿼리를 실행해 보십시오.

 ALTER TABLE tablename AUTO_INCREMENT = value;

또는 리셋된 자동 증분에 대해 시도합니다.

 ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL;

auto increment를 설정하고 다음 쿼리를 실행합니다.

  ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;

테이블의 자동 증분 카운터는 다음 두 가지 방법으로 설정할 수 있습니다.

  1. 이미 설명한 것처럼 쿼리를 실행하면 다음과 같이 됩니다.

    ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;

  2. Workbench 또는 다른 시각적 데이터베이스 설계 도구를 사용합니다.Workbench에서 어떻게 동작하는지 보여드리지만 다른 툴에서도 크게 다르지 않을 것입니다.원하는 테이블에서 마우스 오른쪽 버튼을 클릭하여Alter table를 선택합니다.아래쪽에는 테이블 변경에 사용할 수 있는 모든 옵션이 표시됩니다.[ ] 를 합니다.Options하다

    여기에 이미지 설명을 입력하십시오.

다음 이 값을 만 하면 됩니다.Auto increment이미이그러면 기본적으로 첫 번째 옵션에 표시된 쿼리가 실행됩니다.

★★★★★★★★★를 사용하고 있는 경우는PHPStorm's database tool은 '아까', '아까', '아까', '아까', '아까'에요.database console:

ALTER TABLE <table_name> AUTO_INCREMENT = 0;
ALTER TABLE tablename AUTO_INCREMENT = 1

테이블을 변경하여 auto_increment를 1로 설정하려고 했지만 작동하지 않았습니다.증분 중인 열 이름을 삭제하고 원하는 이름으로 새 열을 만들고 시작부터 증가하도록 새 열을 설정하기로 결정했습니다.

검색해서 이 질문을 찾았는데, 제가 정말 찾고 있는 답변은 다음 두 가지 기준을 충족합니다.

  1. 순수 MySQL 쿼리 사용
  2. 기존 테이블을 max(id) + 1로 자동 리셋합니다.

여기서 내가 원하는 것을 정확히 찾을 수 없었기 때문에, 나는 여러 가지 대답으로 답을 조작해서 여기에 공유해 왔다.

주의사항:

  1. 문제의 테이블은 InnoDB입니다.
  2. 테이블은 필드를 사용합니다.id라고 타이핑하여int프라이머리 키로서
  3. MySQL에서만 이 작업을 수행할 수 있는 유일한 방법은 저장 프로시저를 사용하는 것입니다.
  4. 아래 이미지는 Sequel Pro를 GUI로 사용하고 있습니다.선호하는 MySQL 편집기에 따라 조정할 수 있어야 합니다.
  5. MySQL Ver 14.14 Distributed 5.5.61에서 debian-linux-gnu에 대해 테스트했습니다.

1단계: 저장 프로시저 생성

다음과 같은 저장 프로시저를 만듭니다.

DELIMITER //
CREATE PROCEDURE reset_autoincrement(IN tablename varchar(200))
BEGIN

      SET @get_next_inc = CONCAT('SELECT @next_inc := max(id) + 1 FROM ',tablename,';');
      PREPARE stmt FROM @get_next_inc;
      EXECUTE stmt;
      SELECT @next_inc AS result;
      DEALLOCATE PREPARE stmt;

      set @alter_statement = concat('ALTER TABLE ', tablename, ' AUTO_INCREMENT = ', @next_inc, ';');
      PREPARE stmt FROM @alter_statement;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
END //
DELIMITER ;

그럼 실행해봐.

실행 전에 데이터베이스의 저장 프로시저에서 확인할 수 있습니다.

여기에 이미지 설명 입력

실행할 때 저장 프로시저를 선택하고 Run Selection(Run Selection)

여기에 이미지 설명 입력

주의: 구분자 부분은 중요합니다.따라서 이 질문의 상위 선택 항목에서 복사하여 붙여넣기하면 이러한 이유로 작동하지 않는 경향이 있습니다.

실행 후 저장 프로시저가 표시되어야 합니다.

여기에 이미지 설명 입력

저장 프로시저를 변경해야 하는 경우 저장 프로시저를 삭제한 다음 다시 실행하도록 선택해야 합니다.

2단계: 저장 프로시저를 호출합니다.

이번에는 일반 MySQL 쿼리를 사용할 수 있습니다.

call reset_autoincrement('products');

원래 https://simkimsia.com/reset-mysql-autoincrement-to-max-id-plus-1/의 SQL 쿼리 노트를 사용하여 스택 오버플로에 맞게 조정되었습니다.

ALTER TABLE `table_name`   DROP `id`;

ALTER TABLE `table_name` ADD `id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`) ;

잠시 후 먼저 ID 열을 삭제한 후 다시 기본 키 ID를 추가했습니다.

가장 좋은 방법은 AI로 필드를 제거한 후 AI로 다시 추가하는 것입니다.모든 테이블에서 사용할 수 있습니다.

Miles M의 코멘트에 따라 MySQL의 범위를 수정하는 PHP 코드가 있습니다.또한 my.ini 파일(MySQL)을 열고 max_syslog_time=60을 max_syslog_time=syslog;로 변경해야 합니다.

"ALTER TABLE tablename AUTO_INCREMENT = 1"을 사용하지 마십시오.그러면 데이터베이스의 모든 항목이 삭제됩니다.

$con = mysqli_connect($dbhost, $dbuser, $dbpass, $database);
$res = mysqli_query($con, "select * FROM data WHERE id LIKE id ORDER BY id ASC");

$count = 0;
while ($row = mysqli_fetch_array($res)){
    $count++;

    mysqli_query($con, "UPDATE data SET id='".$count."' WHERE id='".$row['id']."'");
}
echo 'Done reseting id';
mysqli_close($con);

Query Browser(쿼리 브라우저)로 이동하여 다음을 수행할 것을 권장합니다.

  1. 스키마타로 이동하여 변경할 테이블을 찾습니다.

  2. 마우스 오른쪽 버튼을 클릭하고 copy create statement를 선택합니다.

  3. 결과 탭을 열고 create 문을 붙여넣습니다.

  4. create 문의 마지막 행으로 이동하여 Auto_를 찾습니다.Increment=N(여기서 N은 auto_module 필드의 현재 숫자입니다.)

  5. N을 1로 바꿉니다.

  6. + 를 누릅니다.

테이블에 새 행을 입력하면 auto_increment가 1로 리셋됩니다.

auto_increment 필드 값이 이미 존재하는 행을 추가하려고 하면 어떻게 되는지 알 수 없습니다.

언급URL : https://stackoverflow.com/questions/8923114/how-to-reset-auto-increment-in-mysql