0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DjangoでDBに登録されたデータのIDをリセットしてみた

Last updated at Posted at 2025-06-17

はじめに

DjangoとFobiを利用して簡易的な帳票アプリを開発・利用しています。

データは永続的にオンラインに置く必要がないため、年度末などのタイミングで保存されたデータをDjangoのAdmin Consoleから定期的に削除しています。

しかしIDは自動的にインクリメントされるためテーブル自体を再作成でもしない限りは最初のデータが1000番から始まるといった事になってしまいます。

個人的にはそういうものだろうと思うのですが、気にする方もいるということで、今回はテーブルを初期化することにしました。

Djangoでの標準的な対応方法

調べてみると利用しているDBのテーブルを直接操作するようです。

機能を提供しても混乱するだけなのかもしれませんが、ALTER TABLEなどは手動で実行するには怖いコマンドなので自動でしてくれると良いのになと思ったところです。

Kubernetes上で稼動するMySQLへのrootアクセス

今回はMySQLを利用しているので、まずKubernetesのコンテナ内部に入ります。

kubectl execを利用してMySQLのインスタンスにアクセスします。

$ kubectl exec -it $(kubectl get pod -l tier=mysql -o jsonpath={.items[0].metadata.name}) -- bash

## MySQLのコンテナの中から実行
$ mysql -u root -p${MYSQL_ROOT_PASSWORD} ${MYSQL_DATABASE}

mysqlコマンドの-pオプションは空白を置いてしまうとうまく動作しないのですが、よく忘れてしまいます。

テーブルの初期化

MySQLのTRUNCATE TABLEステートメントはテーブルの中身を空にするという目的で開発されています。

これを使ってAdmin Consoleからデータを全て削除した上で操作を行います。

mysql> truncate table db_store_savedformdataentry ;
Query OK, 0 rows affected (1.98 sec)

これで問題なくテーブルを初期化することができ、テストした範囲では問題なく利用できました。

さいごに

Kubernetesを利用しているのでDBのドロップ・再作成はそれほど難しくないですが、これまで問題なく動いていたシステムの再作成は少し躊躇します。

FOBIのDB Storeが管理するテーブル1つのTRUNCATE TABLEで済むのであれば、気楽に実行できるので助かります。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?