プロジェクト

全般

プロフィール

Redmine 奥の手

はじめに

あまりお薦めできないことや、トリッキーなことなどを隔離してメモを残すページです。

こんなときに・・・

間違って大量のチケットを追加し削除後、チケット番号の発番を追加前時点からにしたい

チケットを登録し、それを削除しても、次のチケットの番号は削除したチケットの次の番号となります。
しかし、数千件のチケットを登録し、削除したときなどは、さすがにチケットの発番を元に戻したいことがあります。

MySQL限定ですが、チケットのテーブルのAUTO_INCREMENTの値を戻すことで可能になります。
例えば、チケット番号123までのチケットがあり、そこにチケットを大量追加・削除したあと、チケット番号124から発番されるようにしたい場合、issuesテーブルのAUTO_INCREMENT設定値を123に設定します。

mysql> ALTER TABLE issues AUTO_INCREMENT=123;

123より大きいチケットが登録されていなければ(削除済みならOK)、次の発番は124からとなります。

mysql> SHOW TABLE STATUS LIKE 'issues'\G;
*************************** 1. row ***************************
           Name: issues
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 123
 Avg_row_length: 1489
    Data_length: 16384
Max_data_length: 0
   Index_length: 163840
      Data_free: 9437184
 Auto_increment: 124
    Create_time: 2014-06-10 21:34:26
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

ERROR:
No query specified

mysql>


ほぼ10年前に更新