DB migration failure during the last update

I tried to update our forum via the web UI (tests-passed branch) and Activerecord failed due to a DB migration error. There wasn’t a way to rollback, the button didn’t show up.

The error in the Rails console was:

: SELECT "javascript_caches".* FROM "javascript_caches" WHERE "javascript_caches"."theme_id" = 2)
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/db/pg.rb:69:in `async_exec_params'
Failed to handle exception in exception app middleware : PG::UndefinedColumn: ERROR:  column javascript_caches.theme_id does not exist

The migration was failing because of a foreign key violation:

DETAIL:  Key (theme_field_id)=(6) is not present in table "theme_fields".                                                    
: ALTER TABLE "javascript_caches" ADD CONSTRAINT "fk_rails_ed33506dbd"                                                       
FOREIGN KEY ("theme_field_id")                                                                                               
  REFERENCES "theme_fields" ("id")                                                                                           
 ON DELETE CASCADE  

We had to remove the offending row from javascript_caches for the migration to succeed:

  5 |              6 | da39a3ee5e6b4b0d3255bfef95601890afd80709 |         | 2018-10-18 10:03:26.069247 | 2018-10-18 10:03:26.069247

Our current version is https://github.com/discourse/discourse/compare/22abad415192b53b899ea6a98b8c7f73c85ca0c1...tests-passed

Our issue in GitLab GitLab forum error 500 (#6844) · Issues · GitLab.com / GitLab Infrastructure Team / Production Engineering · GitLab.

4개의 좋아요

@david just fixed this, can you rebuild again?

The migration is atomic so there is no permanent damage or half rolled out migrations like you can get in MySQL

9개의 좋아요