@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Go: 今日ハマったバグ

address テーブルに INSERT する前に address_log テーブルに履歴を INSERT する、というコードを書いていて、 address テーブルから SELECT した結果を struct で Scan するとき id を Scan し忘れていることに気づかず、外部キー制約エラー。

pq: insert or update on table "address_log" violates foreign key constraint "address_log_address_id_fk"

print デバッグすると struct の ID フィールドの値は 0 となっていて、パッと見ちゃんと数字なので、「実際は NULL だけど struct になった時点で int64 のゼロ値に変換されていて 0 と表示されている」ということに気づくまで時間がかかった。

gist.github.com