Was ist der beste Weg, um die Integrität der Datenbank zu überprüfen?

Ich möchte Benutzer, Themen und Beiträge von einem Forum in ein anderes zusammenführen. Während die Wiederherstellung des Forums in einer Dev-Umgebung problemlos funktioniert, erhalte ich beim Zusammenführen (derzeit in einer frischen Installation) PG::ForeignKeyViolation-Fehler. Ich frage mich daher, ob es ein Discourse-Tool gibt, mit dem die Integrität einer Datenbank überprüft werden kann. Falls nicht, gibt es sonst noch Tipps oder Ideen?

(Es gab bereits einige Themen zu Datenbankproblemen, daher frage ich mich, ob das DC-Team der Meinung ist, dass ein solches Tool sinnvoll wäre, falls es aktuell nicht verfügbar ist?)

Ich habe manuell einen Diff der Schemas zwischen einem Discourse-Forum, das vor über 5 Jahren erstellt wurde, und einer frischen Installation durchgeführt. Die Unterschiede können Sie hier einsehen:

https://www.diffchecker.com/lZrp2jxJ

Es handelt sich hauptsächlich um Änderungen von bigint zu integer und von character varying(255) zu character varying sowie einige fehlende NOT NULL-Einschränkungen. Zudem fehlen einige Indizes.

Hier sind die Zeilen, die diese aufzeigen:

Zeile 1646 – fehlt:

  Index "public.index_badges_on_badge_type_id"
 Column |          Type          | Key? | Definition 		    Column     |  Type   | Key? |  Definition   
--------+------------------------+------+------------		---------------+---------+------+---------------
 name   | character varying(255) | yes  | name		 badge_type_id | integer | yes  | badge_type_id
btree, for table "public.badges"

Zeile 3301 – fehlt:

	Index "public.index_user_badges_on_user_id"
 Column  |  Type   | Key? | Definition 
---------+---------+------+------------
 user_id | integer | yes  | user_id
btree, for table "public.user_badges"

Zeile 4639 – fehlt:

	      Index "public.schema_migrations_pkey"
 Column  |       Type        | Key? | Definition 
---------+-------------------+------+------------
 version | character varying | yes  | version
primary key, btree, for table "public.schema_migrations"

Zeile 5487 – teilweise fehlt:

                                       Table "public.topic_search_data"
   Column    |          Type          | Collation | Nullable | Default 		   Column    |       Type        | Collation | Nullable |                       Default                       
-------------+------------------------+-----------+----------+---------		-------------+-------------------+-----------+----------+-----------------------------------------------------
 topic_id    | integer                |           | not null | 		 topic_id    | integer           |           | not null | nextval('topic_search_data_topic_id_seq'::regclass)
 raw_data    | text                   |           |          | 		 raw_data    | text              |           |          | 
 locale      | character varying(255) |           | not null | 		 locale      | character varying |           | not null | 
 search_data | tsvector               |           |          | 		 search_data | tsvector          |           |          | 
 version     | integer                |           |          | 0		 version     | integer           |           |          | 0

Zeile 5506 – fehlt:

           Sequence "public.topic_search_data_topic_id_seq"
  Type   | Start | Minimum |  Maximum   | Increment | Cycles? | Cache 
---------+-------+---------+------------+-----------+---------+-------
 integer |     1 |       1 | 2147483647 |         1 | no      |     1
Owned by: public.topic_search_data.topic_id

Zeile 6044 – fehlt:

    "index_user_badges_on_user_id" btree (user_id)

Sollte ich mir darüber Sorgen machen? Soll ich die Indizes manuell hinzufügen? Hast du noch andere Gedanken oder fällt dir sonst noch etwas auf? (Es ist hier fast 5 Uhr morgens, und ich kämpfe darum, die Augen offen zu halten :see_no_evil:)