0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

更新されないと思ったら「更新日時」を更新していなかった。【高校生のバグ解決録003】

0
Posted at

アドバイスなど,コメント頂けると嬉しいです。

食堂の予約システムの開発中,食堂側の管理画面を作っていたときのお話です。

バグの詳細

Screenshot 2026-07-09 14.09.52.png

商品の状態を更新する処理を作っていたところ,追加処理は上手くいくのに,状態の更新が反映されなくなりました。

試行錯誤の内訳

① SQLを疑う

var_dump($sql);
var_dump($param);

問題なく,正常に表示されました。

② データベースを確認する

ステータス = "準備完了"

ちゃんと更新されています。

③ 画面側を調べる

次に,画面の更新タイミングを確認しました。すると,

前回取得したtime
↓
現在のtime
↓
違えば再取得

という仕組みになっていました。画面は更新日時(time)だけを見て,更新を判断しているということです。自分で書いたはずなのに…。

バグの原因と解決

状態だけ更新して,更新時刻を更新していなかったことが今回のバグの原因です。
解決を図るため,サーバ上で 更新時刻 を管理する部分に

ON UPDATE CURRENT_TIMESTAMP()
-- 自動で最終更新時刻を代入する処理

を設定しました。

更新時刻をアプリ側で管理する必要がなくなり,今回のような更新漏れも防ぐことができます。今後は制作時の選択肢として積極的に活用していきます。

最後に

同じ「画面が更新されない」という現象でも原因は,

  • SQL
  • PHP
  • JavaScript
  • キャッシュ
  • 更新判定

など様々です。

今回はデータそのものではなく、「更新されたことを示す情報」が更新されていなかったことが原因でした。画面が切り替わらなくなってしまった際は,

「画面は何を見て更新を判断しているのか?」

まで確認すると、原因が見つかるかもしれません。

ここまでお読み頂き,ありがとうございました。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?