Discourse أعلى 3.2.0 (v3.3.3,…).
أنا أستخدم PostgreSQL 15.3 (EnterpriseDB Advanced Server 15.3.0) على x86_64-pc-linux-gnu، تم تجميعه بواسطة gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-16)، 64 بت.
عند تشغيل rake db:migrate، أواجه هذا الخطأ:
PG::NotNullViolation: ERROR: null value in column "first_unread_at" of relation "user_stats" violates not-null constraint (PG::NotNullViolation)
DETAIL: Failing row contains (130, 0, 0, 0, 0, 0, 0, 2025-02-25 03:27:48.934913, null, null, 0, 0, 0, null, 0, 0, 0, null, 0, null, null, null, 0, 0)
لقد حققت واكتشفت أن السبب هو أن التطبيق يحاول إدراج قيمة فارغة في حقل غير فارغ مع قيمة افتراضية current_timestamp.
الحل الخاص بي:
BEGIN;
ALTER TABLE user_stats
ALTER COLUMN first_unread_at SET NOT NULL,
ALTER COLUMN first_unread_at SET DEFAULT NOW();
COMMIT;
BEGIN;
ALTER TABLE user_stats
ALTER COLUMN first_unread_pm_at SET NOT NULL,
ALTER COLUMN first_unread_pm_at SET DEFAULT NOW();
COMMIT;
BEGIN;
ALTER TABLE group_users
ALTER COLUMN first_unread_pm_at SET NOT NULL,
ALTER COLUMN first_unread_pm_at SET DEFAULT NOW();
COMMIT;
ولكن هناك العديد من الحقول الأخرى التي لا يمكن إدراجها، ولم أتمكن من العثور عليها وإصلاحها كلها باستخدام هذه الطريقة.