データベースなんも分からん。

たまにエラーが発生するクエリー、手元でテストのテーブル作って試す限りでは再現できない。

一つ目が、キュー代わりに使っているテーブルからFOR UPDATE SKIP LOCKEDしているクエリーで、一日に一回ぐらい同じレコードが採れてしまう問題。

フォロー

二つ目が、INSERT INTO ON CONFLICT DO UPDATE SETで無ければシーケンス付き挿入、有れば更新している処理で重複エラーが発生する問題。更新の時にもシーケンスが進んでしまうのがいやで、セットでシーケンスをテーブル最大値に再セットしているのが悪いんだと思うが、うーん。

根本原因が分からないまま、ON CONFLICTに頼らず事前にレコードがあるか調べてINSERTとUPDATEに振り分ける、とりあえずの対策を入れた。

ログインして会話に参加
:realtek:

思考の /dev/null