Discourse höher 3.2.0 (v3.3.3,…).
Ich verwende PostgreSQL 15.3 (EnterpriseDB Advanced Server 15.3.0) auf x86_64-pc-linux-gnu, kompiliert von gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-16), 64-Bit.
Wenn ich rake db:migrate ausführe, erhalte ich diesen Fehler:
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)
Ich habe recherchiert und festgestellt, dass der Grund darin liegt, dass die Anwendung versucht, einen Nullwert in ein Feld einzufügen, das nicht null ist, mit einem Standardwert current_timestamp.
Meine Lösung:
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;
Aber es gibt viele andere Felder, die nicht eingefügt werden können. Ich konnte sie mit dieser Methode noch nicht alle finden und beheben.