Mysql2::Error: Cannot add foreign key constraint when initializing EE database

In EE master, I just tried running:

$ RAILS_ENV=test bundle exec rake db:reset

Then I got:

warning: parser/current is loading parser/ruby23, which recognizes
warning: 2.3.5-compliant syntax, but you are running 2.3.6.
warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
Database 'gitlabhq_test' does not exist
-- create_table("abuse_reports", {:force=>:cascade})
   -> 0.0219s
-- create_table("appearances", {:force=>:cascade})
   -> 0.0147s
-- create_table("application_settings", {:force=>:cascade})
   -> 0.0176s
-- create_table("approvals", {:force=>:cascade})
   -> 0.0146s
-- add_index("approvals", ["merge_request_id"], {:name=>"index_approvals_on_merge_request_id", :using=>:btree})
   -> 0.0153s
-- create_table("approver_groups", {:force=>:cascade})
   -> 0.0152s
-- add_index("approver_groups", ["group_id"], {:name=>"index_approver_groups_on_group_id", :using=>:btree})
   -> 0.0212s
-- add_index("approver_groups", ["target_id", "target_type"], {:name=>"index_approver_groups_on_target_id_and_target_type", :using=>:btree})
   -> 0.0160s
-- create_table("approvers", {:force=>:cascade})
   -> 0.0189s
-- add_index("approvers", ["target_id", "target_type"], {:name=>"index_approvers_on_target_id_and_target_type", :using=>:btree})
   -> 0.0170s
-- add_index("approvers", ["user_id"], {:name=>"index_approvers_on_user_id", :using=>:btree})
   -> 0.0149s
-- create_table("audit_events", {:force=>:cascade})
   -> 0.0163s
-- add_index("audit_events", ["entity_id", "entity_type"], {:name=>"index_audit_events_on_entity_id_and_entity_type", :using=>:btree})
   -> 0.0234s
-- create_table("award_emoji", {:force=>:cascade})
   -> 0.0176s
-- add_index("award_emoji", ["awardable_type", "awardable_id"], {:name=>"index_award_emoji_on_awardable_type_and_awardable_id", :using=>:btree})
   -> 0.0299s
-- add_index("award_emoji", ["user_id", "name"], {:name=>"index_award_emoji_on_user_id_and_name", :using=>:btree})
   -> 0.0169s
-- create_table("boards", {:force=>:cascade})
   -> 0.0144s
-- add_index("boards", ["group_id"], {:name=>"index_boards_on_group_id", :using=>:btree})
   -> 0.0191s
-- add_index("boards", ["milestone_id"], {:name=>"index_boards_on_milestone_id", :using=>:btree})
   -> 0.0151s
-- add_index("boards", ["project_id"], {:name=>"index_boards_on_project_id", :using=>:btree})
   -> 0.0168s
-- create_table("broadcast_messages", {:force=>:cascade})
   -> 0.0214s
-- add_index("broadcast_messages", ["starts_at", "ends_at", "id"], {:name=>"index_broadcast_messages_on_starts_at_and_ends_at_and_id", :using=>:btree})
   -> 0.0193s
-- create_table("chat_names", {:force=>:cascade})
   -> 0.0155s
-- add_index("chat_names", ["service_id", "team_id", "chat_id"], {:name=>"index_chat_names_on_service_id_and_team_id_and_chat_id", :unique=>true, :using=>:btree})
   -> 0.0261s
-- add_index("chat_names", ["user_id", "service_id"], {:name=>"index_chat_names_on_user_id_and_service_id", :unique=>true, :using=>:btree})
   -> 0.0173s
-- create_table("chat_teams", {:force=>:cascade})
   -> 0.0151s
-- add_index("chat_teams", ["namespace_id"], {:name=>"index_chat_teams_on_namespace_id", :unique=>true, :using=>:btree})
   -> 0.0200s
-- create_table("ci_builds", {:force=>:cascade})
   -> 0.0150s
-- add_index("ci_builds", ["auto_canceled_by_id"], {:name=>"index_ci_builds_on_auto_canceled_by_id", :using=>:btree})
   -> 0.0141s
-- add_index("ci_builds", ["commit_id", "stage_idx", "created_at"], {:name=>"index_ci_builds_on_commit_id_and_stage_idx_and_created_at", :using=>:btree})
   -> 0.0192s
-- add_index("ci_builds", ["commit_id", "status", "type"], {:name=>"index_ci_builds_on_commit_id_and_status_and_type", :using=>:btree})
   -> 0.0169s
-- add_index("ci_builds", ["commit_id", "type", "name", "ref"], {:name=>"index_ci_builds_on_commit_id_and_type_and_name_and_ref", :using=>:btree})
   -> 0.0175s
-- add_index("ci_builds", ["commit_id", "type", "ref"], {:name=>"index_ci_builds_on_commit_id_and_type_and_ref", :using=>:btree})
   -> 0.0253s
-- add_index("ci_builds", ["project_id"], {:name=>"index_ci_builds_on_project_id", :using=>:btree})
   -> 0.0250s
-- add_index("ci_builds", ["protected"], {:name=>"index_ci_builds_on_protected", :using=>:btree})
   -> 0.0198s
-- add_index("ci_builds", ["runner_id"], {:name=>"index_ci_builds_on_runner_id", :using=>:btree})
   -> 0.0165s
-- add_index("ci_builds", ["stage_id"], {:name=>"index_ci_builds_on_stage_id", :using=>:btree})
   -> 0.0163s
-- add_index("ci_builds", ["status", "type", "runner_id"], {:name=>"index_ci_builds_on_status_and_type_and_runner_id", :using=>:btree})
   -> 0.0275s
-- add_index("ci_builds", ["status"], {:name=>"index_ci_builds_on_status", :using=>:btree})
   -> 0.0172s
-- add_index("ci_builds", ["token"], {:name=>"index_ci_builds_on_token", :unique=>true, :using=>:btree})
   -> 0.0160s
-- add_index("ci_builds", ["updated_at"], {:name=>"index_ci_builds_on_updated_at", :using=>:btree})
   -> 0.0228s
-- add_index("ci_builds", ["user_id"], {:name=>"index_ci_builds_on_user_id", :using=>:btree})
   -> 0.0185s
-- create_table("ci_group_variables", {:force=>:cascade})
   -> 0.0159s
-- add_index("ci_group_variables", ["group_id", "key"], {:name=>"index_ci_group_variables_on_group_id_and_key", :unique=>true, :using=>:btree})
   -> 0.0181s
-- create_table("ci_pipeline_schedule_variables", {:force=>:cascade})
   -> 0.0200s
-- add_index("ci_pipeline_schedule_variables", ["pipeline_schedule_id", "key"], {:name=>"index_ci_pipeline_schedule_variables_on_schedule_id_and_key", :unique=>true, :using=>:btree})
   -> 0.0167s
-- create_table("ci_pipeline_schedules", {:force=>:cascade})
   -> 0.0171s
-- add_index("ci_pipeline_schedules", ["next_run_at", "active"], {:name=>"index_ci_pipeline_schedules_on_next_run_at_and_active", :using=>:btree})
   -> 0.0183s
-- add_index("ci_pipeline_schedules", ["owner_id"], {:name=>"fk_9ea99f58d2", :using=>:btree})
   -> 0.0172s
-- add_index("ci_pipeline_schedules", ["project_id"], {:name=>"index_ci_pipeline_schedules_on_project_id", :using=>:btree})
   -> 0.0189s
-- create_table("ci_pipeline_variables", {:force=>:cascade})
   -> 0.0150s
-- add_index("ci_pipeline_variables", ["pipeline_id", "key"], {:name=>"index_ci_pipeline_variables_on_pipeline_id_and_key", :unique=>true, :using=>:btree})
   -> 0.0169s
-- create_table("ci_pipelines", {:force=>:cascade})
   -> 0.0174s
-- add_index("ci_pipelines", ["auto_canceled_by_id"], {:name=>"index_ci_pipelines_on_auto_canceled_by_id", :using=>:btree})
   -> 0.0158s
-- add_index("ci_pipelines", ["pipeline_schedule_id"], {:name=>"index_ci_pipelines_on_pipeline_schedule_id", :using=>:btree})
   -> 0.0186s
-- add_index("ci_pipelines", ["project_id", "ref", "status"], {:name=>"index_ci_pipelines_on_project_id_and_ref_and_status", :using=>:btree})
   -> 0.0280s
-- add_index("ci_pipelines", ["project_id", "sha"], {:name=>"index_ci_pipelines_on_project_id_and_sha", :using=>:btree})
   -> 0.0175s
-- add_index("ci_pipelines", ["project_id"], {:name=>"index_ci_pipelines_on_project_id", :using=>:btree})
   -> 0.0288s
-- add_index("ci_pipelines", ["status"], {:name=>"index_ci_pipelines_on_status", :using=>:btree})
   -> 0.0178s
-- add_index("ci_pipelines", ["user_id"], {:name=>"index_ci_pipelines_on_user_id", :using=>:btree})
   -> 0.0163s
-- create_table("ci_runner_projects", {:force=>:cascade})
   -> 0.0130s
-- add_index("ci_runner_projects", ["project_id"], {:name=>"index_ci_runner_projects_on_project_id", :using=>:btree})
   -> 0.0181s
-- add_index("ci_runner_projects", ["runner_id"], {:name=>"index_ci_runner_projects_on_runner_id", :using=>:btree})
   -> 0.0146s
-- create_table("ci_runners", {:force=>:cascade})
   -> 0.0220s
-- add_index("ci_runners", ["contacted_at"], {:name=>"index_ci_runners_on_contacted_at", :using=>:btree})
   -> 0.0171s
-- add_index("ci_runners", ["is_shared"], {:name=>"index_ci_runners_on_is_shared", :using=>:btree})
   -> 0.0153s
-- add_index("ci_runners", ["locked"], {:name=>"index_ci_runners_on_locked", :using=>:btree})
   -> 0.0145s
-- add_index("ci_runners", ["token"], {:name=>"index_ci_runners_on_token", :using=>:btree})
   -> 0.0187s
-- create_table("ci_sources_pipelines", {:force=>:cascade})
   -> 0.0149s
-- add_index("ci_sources_pipelines", ["pipeline_id"], {:name=>"index_ci_sources_pipelines_on_pipeline_id", :using=>:btree})
   -> 0.0221s
-- add_index("ci_sources_pipelines", ["project_id"], {:name=>"index_ci_sources_pipelines_on_project_id", :using=>:btree})
   -> 0.0185s
-- add_index("ci_sources_pipelines", ["source_job_id"], {:name=>"index_ci_sources_pipelines_on_source_job_id", :using=>:btree})
   -> 0.0151s
-- add_index("ci_sources_pipelines", ["source_pipeline_id"], {:name=>"index_ci_sources_pipelines_on_source_pipeline_id", :using=>:btree})
   -> 0.0150s
-- add_index("ci_sources_pipelines", ["source_project_id"], {:name=>"index_ci_sources_pipelines_on_source_project_id", :using=>:btree})
   -> 0.0200s
-- create_table("ci_stages", {:force=>:cascade})
   -> 0.0190s
-- add_index("ci_stages", ["pipeline_id", "name"], {:name=>"index_ci_stages_on_pipeline_id_and_name", :using=>:btree})
   -> 0.0178s
-- add_index("ci_stages", ["pipeline_id"], {:name=>"index_ci_stages_on_pipeline_id", :using=>:btree})
   -> 0.0159s
-- add_index("ci_stages", ["project_id"], {:name=>"index_ci_stages_on_project_id", :using=>:btree})
   -> 0.0174s
-- create_table("ci_trigger_requests", {:force=>:cascade})
   -> 0.0157s
-- add_index("ci_trigger_requests", ["commit_id"], {:name=>"index_ci_trigger_requests_on_commit_id", :using=>:btree})
   -> 0.0148s
-- add_index("ci_trigger_requests", ["trigger_id"], {:name=>"fk_b8ec8b7245", :using=>:btree})
   -> 0.0151s
-- create_table("ci_triggers", {:force=>:cascade})
   -> 0.0147s
-- add_index("ci_triggers", ["owner_id"], {:name=>"fk_e8e10d1964", :using=>:btree})
   -> 0.0143s
-- add_index("ci_triggers", ["project_id"], {:name=>"index_ci_triggers_on_project_id", :using=>:btree})
   -> 0.0149s
-- create_table("ci_variables", {:force=>:cascade})
   -> 0.0146s
-- add_index("ci_variables", ["project_id", "key", "environment_scope"], {:name=>"index_ci_variables_on_project_id_and_key_and_environment_scope", :unique=>true, :using=>:btree})
   -> 0.0238s
-- create_table("container_repositories", {:force=>:cascade})
   -> 0.0169s
-- add_index("container_repositories", ["project_id", "name"], {:name=>"index_container_repositories_on_project_id_and_name", :unique=>true, :using=>:btree})
   -> 0.0160s
-- add_index("container_repositories", ["project_id"], {:name=>"index_container_repositories_on_project_id", :using=>:btree})
   -> 0.0155s
-- create_table("conversational_development_index_metrics", {:force=>:cascade})
   -> 0.0211s
-- create_table("deploy_keys_projects", {:force=>:cascade})
   -> 0.0135s
-- add_index("deploy_keys_projects", ["project_id"], {:name=>"index_deploy_keys_projects_on_project_id", :using=>:btree})
   -> 0.0209s
-- create_table("deployments", {:force=>:cascade})
   -> 0.0176s
-- add_index("deployments", ["created_at"], {:name=>"index_deployments_on_created_at", :using=>:btree})
   -> 0.0282s
-- add_index("deployments", ["project_id", "environment_id", "iid"], {:name=>"index_deployments_on_project_id_and_environment_id_and_iid", :using=>:btree})
   -> 0.0181s
-- add_index("deployments", ["project_id", "iid"], {:name=>"index_deployments_on_project_id_and_iid", :unique=>true, :using=>:btree})
   -> 0.0172s
-- create_table("emails", {:force=>:cascade})
   -> 0.0208s
-- add_index("emails", ["email"], {:name=>"index_emails_on_email", :unique=>true, :using=>:btree})
   -> 0.0143s
-- add_index("emails", ["user_id"], {:name=>"index_emails_on_user_id", :using=>:btree})
   -> 0.0154s
-- create_table("environments", {:force=>:cascade})
   -> 0.0201s
-- add_index("environments", ["project_id", "name"], {:name=>"index_environments_on_project_id_and_name", :unique=>true, :using=>:btree})
   -> 0.0181s
-- add_index("environments", ["project_id", "slug"], {:name=>"index_environments_on_project_id_and_slug", :unique=>true, :using=>:btree})
   -> 0.0275s
-- create_table("events", {:force=>:cascade})
   -> 0.0203s
-- add_index("events", ["action"], {:name=>"index_events_on_action", :using=>:btree})
   -> 0.0200s
-- add_index("events", ["author_id"], {:name=>"index_events_on_author_id", :using=>:btree})
   -> 0.0215s
-- add_index("events", ["created_at"], {:name=>"index_events_on_created_at", :using=>:btree})
   -> 0.0281s
-- add_index("events", ["project_id", "id"], {:name=>"index_events_on_project_id_and_id", :using=>:btree})
   -> 0.0154s
-- add_index("events", ["target_id"], {:name=>"index_events_on_target_id", :using=>:btree})
   -> 0.0191s
-- add_index("events", ["target_type"], {:name=>"index_events_on_target_type", :using=>:btree})
   -> 0.0243s
-- create_table("events_for_migration", {:force=>:cascade})
   -> 0.0146s
-- add_index("events_for_migration", ["action"], {:name=>"index_events_for_migration_on_action", :using=>:btree})
   -> 0.0193s
-- add_index("events_for_migration", ["author_id"], {:name=>"index_events_for_migration_on_author_id", :using=>:btree})
   -> 0.0254s
-- add_index("events_for_migration", ["project_id", "id"], {:name=>"index_events_for_migration_on_project_id_and_id", :using=>:btree})
   -> 0.0187s
-- add_index("events_for_migration", ["target_type", "target_id"], {:name=>"index_events_for_migration_on_target_type_and_target_id", :using=>:btree})
   -> 0.0246s
-- create_table("feature_gates", {:force=>:cascade})
   -> 0.0144s
-- add_index("feature_gates", ["feature_key", "key", "value"], {:name=>"index_feature_gates_on_feature_key_and_key_and_value", :unique=>true, :using=>:btree})
   -> 0.0201s
-- create_table("features", {:force=>:cascade})
   -> 0.0152s
-- add_index("features", ["key"], {:name=>"index_features_on_key", :unique=>true, :using=>:btree})
   -> 0.0170s
-- create_table("forked_project_links", {:force=>:cascade})
   -> 0.0140s
-- add_index("forked_project_links", ["forked_to_project_id"], {:name=>"index_forked_project_links_on_forked_to_project_id", :unique=>true, :using=>:btree})
   -> 0.0219s
-- create_table("geo_event_log", {:force=>:cascade})
   -> 0.0175s
-- add_index("geo_event_log", ["repositories_changed_event_id"], {:name=>"fk_rails_4a99ebfd60", :using=>:btree})
   -> 0.0164s
-- add_index("geo_event_log", ["repository_created_event_id"], {:name=>"index_geo_event_log_on_repository_created_event_id", :using=>:btree})
   -> 0.0206s
-- add_index("geo_event_log", ["repository_deleted_event_id"], {:name=>"fk_rails_c4b1c1f66e", :using=>:btree})
   -> 0.0184s
-- add_index("geo_event_log", ["repository_renamed_event_id"], {:name=>"fk_rails_86c84214ec", :using=>:btree})
   -> 0.0166s
-- add_index("geo_event_log", ["repository_updated_event_id"], {:name=>"index_geo_event_log_on_repository_updated_event_id", :using=>:btree})
   -> 0.0179s
-- create_table("geo_node_namespace_links", {:force=>:cascade})
   -> 0.0154s
-- add_index("geo_node_namespace_links", ["geo_node_id", "namespace_id"], {:name=>"index_geo_node_namespace_links_on_geo_node_id_and_namespace_id", :unique=>true, :using=>:btree})
   -> 0.0188s
-- add_index("geo_node_namespace_links", ["geo_node_id"], {:name=>"index_geo_node_namespace_links_on_geo_node_id", :using=>:btree})
   -> 0.0193s
-- add_index("geo_node_namespace_links", ["namespace_id"], {:name=>"fk_rails_41ff5fb854", :using=>:btree})
   -> 0.0150s
-- create_table("geo_nodes", {:force=>:cascade})
   -> 0.0205s
-- add_index("geo_nodes", ["access_key"], {:name=>"index_geo_nodes_on_access_key", :using=>:btree})
   -> 0.0237s
-- add_index("geo_nodes", ["host"], {:name=>"index_geo_nodes_on_host", :using=>:btree})
   -> 0.0158s
-- add_index("geo_nodes", ["primary"], {:name=>"index_geo_nodes_on_primary", :using=>:btree})
   -> 0.0176s
-- create_table("geo_repositories_changed_events", {:force=>:cascade})
   -> 0.0169s
-- add_index("geo_repositories_changed_events", ["geo_node_id"], {:name=>"index_geo_repositories_changed_events_on_geo_node_id", :using=>:btree})
   -> 0.0141s
-- create_table("geo_repository_created_events", {:force=>:cascade})
   -> 0.0181s
-- add_index("geo_repository_created_events", ["project_id"], {:name=>"index_geo_repository_created_events_on_project_id", :using=>:btree})
   -> 0.0211s
-- create_table("geo_repository_deleted_events", {:force=>:cascade})
   -> 0.0167s
-- add_index("geo_repository_deleted_events", ["project_id"], {:name=>"index_geo_repository_deleted_events_on_project_id", :using=>:btree})
   -> 0.0174s
-- create_table("geo_repository_renamed_events", {:force=>:cascade})
   -> 0.0153s
-- add_index("geo_repository_renamed_events", ["project_id"], {:name=>"index_geo_repository_renamed_events_on_project_id", :using=>:btree})
   -> 0.0150s
-- create_table("geo_repository_updated_events", {:force=>:cascade})
   -> 0.0181s
-- add_index("geo_repository_updated_events", ["project_id"], {:name=>"index_geo_repository_updated_events_on_project_id", :using=>:btree})
   -> 0.0196s
-- add_index("geo_repository_updated_events", ["source"], {:name=>"index_geo_repository_updated_events_on_source", :using=>:btree})
   -> 0.0166s
-- create_table("gpg_keys", {:force=>:cascade})
   -> 0.0149s
-- add_index("gpg_keys", ["fingerprint"], {:name=>"index_gpg_keys_on_fingerprint", :unique=>true, :length=>{"fingerprint"=>20}, :using=>:btree})
   -> 0.0185s
-- add_index("gpg_keys", ["primary_keyid"], {:name=>"index_gpg_keys_on_primary_keyid", :unique=>true, :length=>{"primary_keyid"=>20}, :using=>:btree})
   -> 0.0154s
-- add_index("gpg_keys", ["user_id"], {:name=>"index_gpg_keys_on_user_id", :using=>:btree})
   -> 0.0212s
-- create_table("gpg_signatures", {:force=>:cascade})
   -> 0.0181s
-- add_index("gpg_signatures", ["commit_sha"], {:name=>"index_gpg_signatures_on_commit_sha", :unique=>true, :length=>{"commit_sha"=>20}, :using=>:btree})
   -> 0.0166s
-- add_index("gpg_signatures", ["gpg_key_id"], {:name=>"index_gpg_signatures_on_gpg_key_id", :using=>:btree})
   -> 0.0149s
-- add_index("gpg_signatures", ["gpg_key_primary_keyid"], {:name=>"index_gpg_signatures_on_gpg_key_primary_keyid", :length=>{"gpg_key_primary_keyid"=>20}, :using=>:btree})
   -> 0.0151s
-- add_index("gpg_signatures", ["project_id"], {:name=>"index_gpg_signatures_on_project_id", :using=>:btree})
   -> 0.0176s
-- create_table("historical_data", {:force=>:cascade})
   -> 0.0181s
-- create_table("identities", {:force=>:cascade})
   -> 0.0224s
-- add_index("identities", ["user_id"], {:name=>"index_identities_on_user_id", :using=>:btree})
   -> 0.0164s
-- create_table("index_statuses", {:force=>:cascade})
   -> 0.0191s
-- add_index("index_statuses", ["project_id"], {:name=>"index_index_statuses_on_project_id", :unique=>true, :using=>:btree})
   -> 0.0224s
-- create_table("issue_assignees", {:id=>false, :force=>:cascade})
   -> 0.0182s
-- add_index("issue_assignees", ["issue_id", "user_id"], {:name=>"index_issue_assignees_on_issue_id_and_user_id", :unique=>true, :using=>:btree})
   -> 0.0167s
-- add_index("issue_assignees", ["user_id"], {:name=>"index_issue_assignees_on_user_id", :using=>:btree})
   -> 0.0149s
-- create_table("issue_links", {:force=>:cascade})
   -> 0.0145s
-- add_index("issue_links", ["source_id", "target_id"], {:name=>"index_issue_links_on_source_id_and_target_id", :unique=>true, :using=>:btree})
   -> 0.0149s
-- add_index("issue_links", ["source_id"], {:name=>"index_issue_links_on_source_id", :using=>:btree})
   -> 0.0248s
-- add_index("issue_links", ["target_id"], {:name=>"index_issue_links_on_target_id", :using=>:btree})
   -> 0.0173s
-- create_table("issue_metrics", {:force=>:cascade})
   -> 0.0136s
-- add_index("issue_metrics", ["issue_id"], {:name=>"index_issue_metrics", :using=>:btree})
   -> 0.0154s
-- create_table("issues", {:force=>:cascade})
   -> 0.0161s
-- add_index("issues", ["assignee_id"], {:name=>"index_issues_on_assignee_id", :using=>:btree})
   -> 0.0156s
-- add_index("issues", ["author_id"], {:name=>"index_issues_on_author_id", :using=>:btree})
   -> 0.0163s
-- add_index("issues", ["confidential"], {:name=>"index_issues_on_confidential", :using=>:btree})
   -> 0.0157s
-- add_index("issues", ["deleted_at"], {:name=>"index_issues_on_deleted_at", :using=>:btree})
   -> 0.0182s
-- add_index("issues", ["milestone_id"], {:name=>"index_issues_on_milestone_id", :using=>:btree})
   -> 0.0230s
-- add_index("issues", ["moved_to_id"], {:name=>"index_issues_on_moved_to_id", :using=>:btree})
   -> 0.0190s
-- add_index("issues", ["project_id", "created_at", "id", "state"], {:name=>"index_issues_on_project_id_and_created_at_and_id_and_state", :using=>:btree})
   -> 0.0231s
-- add_index("issues", ["project_id", "due_date", "id", "state"], {:name=>"index_issues_on_project_id_and_due_date_and_id_and_state", :using=>:btree})
   -> 0.0205s
-- add_index("issues", ["project_id", "iid"], {:name=>"index_issues_on_project_id_and_iid", :unique=>true, :using=>:btree})
   -> 0.0279s
-- add_index("issues", ["project_id", "updated_at", "id", "state"], {:name=>"index_issues_on_project_id_and_updated_at_and_id_and_state", :using=>:btree})
   -> 0.0206s
-- add_index("issues", ["relative_position"], {:name=>"index_issues_on_relative_position", :using=>:btree})
   -> 0.0229s
-- add_index("issues", ["state"], {:name=>"index_issues_on_state", :using=>:btree})
   -> 0.0159s
-- create_table("keys", {:force=>:cascade})
   -> 0.0141s
-- add_index("keys", ["fingerprint"], {:name=>"index_keys_on_fingerprint", :unique=>true, :using=>:btree})
   -> 0.0184s
-- add_index("keys", ["user_id"], {:name=>"index_keys_on_user_id", :using=>:btree})
   -> 0.0150s
-- create_table("label_links", {:force=>:cascade})
   -> 0.0191s
-- add_index("label_links", ["label_id"], {:name=>"index_label_links_on_label_id", :using=>:btree})
   -> 0.0225s
-- add_index("label_links", ["target_id", "target_type"], {:name=>"index_label_links_on_target_id_and_target_type", :using=>:btree})
   -> 0.0170s
-- create_table("label_priorities", {:force=>:cascade})
   -> 0.0137s
-- add_index("label_priorities", ["label_id"], {:name=>"fk_rails_e161058b0f", :using=>:btree})
   -> 0.0170s
-- add_index("label_priorities", ["priority"], {:name=>"index_label_priorities_on_priority", :using=>:btree})
   -> 0.0163s
-- add_index("label_priorities", ["project_id", "label_id"], {:name=>"index_label_priorities_on_project_id_and_label_id", :unique=>true, :using=>:btree})
   -> 0.0173s
-- create_table("labels", {:force=>:cascade})
   -> 0.0226s
-- add_index("labels", ["group_id", "project_id", "title"], {:name=>"index_labels_on_group_id_and_project_id_and_title", :unique=>true, :using=>:btree})
   -> 0.0181s
-- add_index("labels", ["project_id"], {:name=>"index_labels_on_project_id", :using=>:btree})
   -> 0.0179s
-- add_index("labels", ["title"], {:name=>"index_labels_on_title", :using=>:btree})
   -> 0.0231s
-- add_index("labels", ["type", "project_id"], {:name=>"index_labels_on_type_and_project_id", :using=>:btree})
   -> 0.0196s
-- create_table("ldap_group_links", {:force=>:cascade})
   -> 0.0186s
-- create_table("lfs_objects", {:force=>:cascade})
   -> 0.0235s
-- add_index("lfs_objects", ["oid"], {:name=>"index_lfs_objects_on_oid", :unique=>true, :using=>:btree})
   -> 0.0142s
-- create_table("lfs_objects_projects", {:force=>:cascade})
   -> 0.0175s
-- add_index("lfs_objects_projects", ["project_id"], {:name=>"index_lfs_objects_projects_on_project_id", :using=>:btree})
   -> 0.0153s
-- create_table("licenses", {:force=>:cascade})
   -> 0.0185s
-- create_table("lists", {:force=>:cascade})
   -> 0.0190s
-- add_index("lists", ["board_id", "label_id"], {:name=>"index_lists_on_board_id_and_label_id", :unique=>true, :using=>:btree})
   -> 0.0148s
-- add_index("lists", ["label_id"], {:name=>"index_lists_on_label_id", :using=>:btree})
   -> 0.0161s
-- create_table("members", {:force=>:cascade})
   -> 0.0144s
-- add_index("members", ["access_level"], {:name=>"index_members_on_access_level", :using=>:btree})
   -> 0.0176s
-- add_index("members", ["invite_token"], {:name=>"index_members_on_invite_token", :unique=>true, :using=>:btree})
   -> 0.0276s
-- add_index("members", ["requested_at"], {:name=>"index_members_on_requested_at", :using=>:btree})
   -> 0.0155s
-- add_index("members", ["source_id", "source_type"], {:name=>"index_members_on_source_id_and_source_type", :using=>:btree})
   -> 0.0152s
-- add_index("members", ["user_id"], {:name=>"index_members_on_user_id", :using=>:btree})
   -> 0.0166s
-- create_table("merge_request_diff_commits", {:id=>false, :force=>:cascade})
   -> 0.0162s
-- add_index("merge_request_diff_commits", ["merge_request_diff_id", "relative_order"], {:name=>"index_merge_request_diff_commits_on_mr_diff_id_and_order", :unique=>true, :using=>:btree})
   -> 0.0255s
-- create_table("merge_request_diff_files", {:id=>false, :force=>:cascade})
   -> 0.0201s
-- add_index("merge_request_diff_files", ["merge_request_diff_id", "relative_order"], {:name=>"index_merge_request_diff_files_on_mr_diff_id_and_order", :unique=>true, :using=>:btree})
   -> 0.0289s
-- create_table("merge_request_diffs", {:force=>:cascade})
   -> 0.0168s
-- add_index("merge_request_diffs", ["merge_request_id"], {:name=>"index_merge_request_diffs_on_merge_request_id", :using=>:btree})
   -> 0.0154s
-- create_table("merge_request_metrics", {:force=>:cascade})
   -> 0.0179s
-- add_index("merge_request_metrics", ["first_deployed_to_production_at"], {:name=>"index_merge_request_metrics_on_first_deployed_to_production_at", :using=>:btree})
   -> 0.0183s
-- add_index("merge_request_metrics", ["merge_request_id"], {:name=>"index_merge_request_metrics", :using=>:btree})
   -> 0.0184s
-- add_index("merge_request_metrics", ["pipeline_id"], {:name=>"index_merge_request_metrics_on_pipeline_id", :using=>:btree})
   -> 0.0173s
-- create_table("merge_requests", {:force=>:cascade})
   -> 0.0203s
-- add_index("merge_requests", ["assignee_id"], {:name=>"index_merge_requests_on_assignee_id", :using=>:btree})
   -> 0.0211s
-- add_index("merge_requests", ["author_id"], {:name=>"index_merge_requests_on_author_id", :using=>:btree})
   -> 0.0167s
-- add_index("merge_requests", ["created_at"], {:name=>"index_merge_requests_on_created_at", :using=>:btree})
   -> 0.0185s
-- add_index("merge_requests", ["deleted_at"], {:name=>"index_merge_requests_on_deleted_at", :using=>:btree})
   -> 0.0155s
-- add_index("merge_requests", ["head_pipeline_id"], {:name=>"index_merge_requests_on_head_pipeline_id", :using=>:btree})
   -> 0.0204s
-- add_index("merge_requests", ["milestone_id"], {:name=>"index_merge_requests_on_milestone_id", :using=>:btree})
   -> 0.0190s
-- add_index("merge_requests", ["source_branch"], {:name=>"index_merge_requests_on_source_branch", :using=>:btree})
   -> 0.0264s
-- add_index("merge_requests", ["source_project_id"], {:name=>"index_merge_requests_on_source_project_id", :using=>:btree})
   -> 0.0149s
-- add_index("merge_requests", ["target_branch"], {:name=>"index_merge_requests_on_target_branch", :using=>:btree})
   -> 0.0189s
-- add_index("merge_requests", ["target_project_id", "iid"], {:name=>"index_merge_requests_on_target_project_id_and_iid", :unique=>true, :using=>:btree})
   -> 0.0260s
-- add_index("merge_requests", ["title"], {:name=>"index_merge_requests_on_title", :using=>:btree})
   -> 0.0216s
-- create_table("merge_requests_closing_issues", {:force=>:cascade})
   -> 0.0228s
-- add_index("merge_requests_closing_issues", ["issue_id"], {:name=>"index_merge_requests_closing_issues_on_issue_id", :using=>:btree})
   -> 0.0145s
-- add_index("merge_requests_closing_issues", ["merge_request_id"], {:name=>"index_merge_requests_closing_issues_on_merge_request_id", :using=>:btree})
   -> 0.0167s
-- create_table("milestones", {:force=>:cascade})
   -> 0.0196s
-- add_index("milestones", ["due_date"], {:name=>"index_milestones_on_due_date", :using=>:btree})
   -> 0.0199s
-- add_index("milestones", ["group_id"], {:name=>"index_milestones_on_group_id", :using=>:btree})
   -> 0.0181s
-- add_index("milestones", ["project_id", "iid"], {:name=>"index_milestones_on_project_id_and_iid", :unique=>true, :using=>:btree})
   -> 0.0219s
-- add_index("milestones", ["title"], {:name=>"index_milestones_on_title", :using=>:btree})
   -> 0.0137s
-- create_table("namespace_statistics", {:force=>:cascade})
   -> 0.0140s
-- add_index("namespace_statistics", ["namespace_id"], {:name=>"index_namespace_statistics_on_namespace_id", :unique=>true, :using=>:btree})
   -> 0.0248s
-- create_table("namespaces", {:force=>:cascade})
   -> 0.0190s
-- add_index("namespaces", ["created_at"], {:name=>"index_namespaces_on_created_at", :using=>:btree})
   -> 0.0152s
-- add_index("namespaces", ["deleted_at"], {:name=>"index_namespaces_on_deleted_at", :using=>:btree})
   -> 0.0218s
-- add_index("namespaces", ["ldap_sync_last_successful_update_at"], {:name=>"index_namespaces_on_ldap_sync_last_successful_update_at", :using=>:btree})
   -> 0.0174s
-- add_index("namespaces", ["ldap_sync_last_update_at"], {:name=>"index_namespaces_on_ldap_sync_last_update_at", :using=>:btree})
   -> 0.0152s
-- add_index("namespaces", ["name", "parent_id"], {:name=>"index_namespaces_on_name_and_parent_id", :unique=>true, :using=>:btree})
   -> 0.0169s
-- add_index("namespaces", ["owner_id"], {:name=>"index_namespaces_on_owner_id", :using=>:btree})
   -> 0.0154s
-- add_index("namespaces", ["parent_id", "id"], {:name=>"index_namespaces_on_parent_id_and_id", :unique=>true, :using=>:btree})
   -> 0.0191s
-- add_index("namespaces", ["path"], {:name=>"index_namespaces_on_path", :using=>:btree})
   -> 0.0227s
-- add_index("namespaces", ["plan_id"], {:name=>"index_namespaces_on_plan_id", :using=>:btree})
   -> 0.0180s
-- add_index("namespaces", ["require_two_factor_authentication"], {:name=>"index_namespaces_on_require_two_factor_authentication", :using=>:btree})
   -> 0.0264s
-- add_index("namespaces", ["type"], {:name=>"index_namespaces_on_type", :using=>:btree})
   -> 0.0174s
-- create_table("notes", {:force=>:cascade})
   -> 0.0132s
-- add_index("notes", ["author_id"], {:name=>"index_notes_on_author_id", :using=>:btree})
   -> 0.0164s
-- add_index("notes", ["commit_id"], {:name=>"index_notes_on_commit_id", :using=>:btree})
   -> 0.0172s
-- add_index("notes", ["created_at"], {:name=>"index_notes_on_created_at", :using=>:btree})
   -> 0.0271s
-- add_index("notes", ["discussion_id"], {:name=>"index_notes_on_discussion_id", :using=>:btree})
   -> 0.0149s
-- add_index("notes", ["line_code"], {:name=>"index_notes_on_line_code", :using=>:btree})
   -> 0.0182s
-- add_index("notes", ["noteable_id", "noteable_type"], {:name=>"index_notes_on_noteable_id_and_noteable_type", :using=>:btree})
   -> 0.0162s
-- add_index("notes", ["noteable_type"], {:name=>"index_notes_on_noteable_type", :using=>:btree})
   -> 0.0154s
-- add_index("notes", ["project_id", "noteable_type"], {:name=>"index_notes_on_project_id_and_noteable_type", :using=>:btree})
   -> 0.0156s
-- add_index("notes", ["updated_at"], {:name=>"index_notes_on_updated_at", :using=>:btree})
   -> 0.0241s
-- create_table("notification_settings", {:force=>:cascade})
   -> 0.0135s
-- add_index("notification_settings", ["source_id", "source_type"], {:name=>"index_notification_settings_on_source_id_and_source_type", :using=>:btree})
   -> 0.0177s
-- add_index("notification_settings", ["user_id", "source_id", "source_type"], {:name=>"index_notifications_on_user_id_and_source_id_and_source_type", :unique=>true, :using=>:btree})
   -> 0.0153s
-- add_index("notification_settings", ["user_id"], {:name=>"index_notification_settings_on_user_id", :using=>:btree})
   -> 0.0138s
-- create_table("oauth_access_grants", {:force=>:cascade})
   -> 0.0149s
-- add_index("oauth_access_grants", ["token"], {:name=>"index_oauth_access_grants_on_token", :unique=>true, :using=>:btree})
   -> 0.0165s
-- create_table("oauth_access_tokens", {:force=>:cascade})
   -> 0.0147s
-- add_index("oauth_access_tokens", ["refresh_token"], {:name=>"index_oauth_access_tokens_on_refresh_token", :unique=>true, :using=>:btree})
   -> 0.0142s
-- add_index("oauth_access_tokens", ["resource_owner_id"], {:name=>"index_oauth_access_tokens_on_resource_owner_id", :using=>:btree})
   -> 0.0173s
-- add_index("oauth_access_tokens", ["token"], {:name=>"index_oauth_access_tokens_on_token", :unique=>true, :using=>:btree})
   -> 0.0141s
-- create_table("oauth_applications", {:force=>:cascade})
   -> 0.0146s
-- add_index("oauth_applications", ["owner_id", "owner_type"], {:name=>"index_oauth_applications_on_owner_id_and_owner_type", :using=>:btree})
   -> 0.0180s
-- add_index("oauth_applications", ["uid"], {:name=>"index_oauth_applications_on_uid", :unique=>true, :using=>:btree})
   -> 0.0151s
-- create_table("oauth_openid_requests", {:force=>:cascade})
   -> 0.0191s
-- add_index("oauth_openid_requests", ["access_grant_id"], {:name=>"fk_oauth_openid_requests_oauth_access_grants_access_grant_id", :using=>:btree})
   -> 0.0220s
-- create_table("pages_domains", {:force=>:cascade})
   -> 0.0149s
-- add_index("pages_domains", ["domain"], {:name=>"index_pages_domains_on_domain", :unique=>true, :using=>:btree})
   -> 0.0198s
-- add_index("pages_domains", ["project_id"], {:name=>"index_pages_domains_on_project_id", :using=>:btree})
   -> 0.0132s
-- create_table("path_locks", {:force=>:cascade})
   -> 0.0174s
-- add_index("path_locks", ["path"], {:name=>"index_path_locks_on_path", :using=>:btree})
   -> 0.0161s
-- add_index("path_locks", ["project_id"], {:name=>"index_path_locks_on_project_id", :using=>:btree})
   -> 0.0281s
-- add_index("path_locks", ["user_id"], {:name=>"index_path_locks_on_user_id", :using=>:btree})
   -> 0.0178s
-- create_table("personal_access_tokens", {:force=>:cascade})
   -> 0.0199s
-- add_index("personal_access_tokens", ["token"], {:name=>"index_personal_access_tokens_on_token", :unique=>true, :using=>:btree})
   -> 0.0143s
-- add_index("personal_access_tokens", ["user_id"], {:name=>"index_personal_access_tokens_on_user_id", :using=>:btree})
   -> 0.0169s
-- create_table("plans", {:force=>:cascade})
   -> 0.0135s
-- add_index("plans", ["name"], {:name=>"index_plans_on_name", :using=>:btree})
   -> 0.0172s
-- create_table("project_authorizations", {:id=>false, :force=>:cascade})
   -> 0.0136s
-- add_index("project_authorizations", ["project_id"], {:name=>"index_project_authorizations_on_project_id", :using=>:btree})
   -> 0.0210s
-- add_index("project_authorizations", ["user_id", "project_id", "access_level"], {:name=>"index_project_authorizations_on_user_id_project_id_access_level", :unique=>true, :using=>:btree})
   -> 0.0177s
-- create_table("project_features", {:force=>:cascade})
   -> 0.0146s
-- add_index("project_features", ["project_id"], {:name=>"index_project_features_on_project_id", :using=>:btree})
   -> 0.0305s
-- create_table("project_group_links", {:force=>:cascade})
   -> 0.0168s
-- add_index("project_group_links", ["group_id"], {:name=>"index_project_group_links_on_group_id", :using=>:btree})
   -> 0.0137s
-- add_index("project_group_links", ["project_id"], {:name=>"index_project_group_links_on_project_id", :using=>:btree})
   -> 0.0140s
-- create_table("project_import_data", {:force=>:cascade})
   -> 0.0149s
-- add_index("project_import_data", ["project_id"], {:name=>"index_project_import_data_on_project_id", :using=>:btree})
   -> 0.0192s
-- create_table("project_mirror_data", {:force=>:cascade})
   -> 0.0224s
-- add_index("project_mirror_data", ["project_id"], {:name=>"index_project_mirror_data_on_project_id", :unique=>true, :using=>:btree})
   -> 0.0155s
-- create_table("project_statistics", {:force=>:cascade})
   -> 0.0165s
-- add_index("project_statistics", ["namespace_id"], {:name=>"index_project_statistics_on_namespace_id", :using=>:btree})
   -> 0.0171s
-- add_index("project_statistics", ["project_id"], {:name=>"index_project_statistics_on_project_id", :unique=>true, :using=>:btree})
   -> 0.0139s
-- create_table("projects", {:force=>:cascade})
   -> 0.0147s
-- add_index("projects", ["ci_id"], {:name=>"index_projects_on_ci_id", :using=>:btree})
   -> 0.0253s
-- add_index("projects", ["created_at"], {:name=>"index_projects_on_created_at", :using=>:btree})
   -> 0.0147s
-- add_index("projects", ["creator_id"], {:name=>"index_projects_on_creator_id", :using=>:btree})
   -> 0.0147s
-- add_index("projects", ["last_activity_at"], {:name=>"index_projects_on_last_activity_at", :using=>:btree})
   -> 0.0149s
-- add_index("projects", ["last_repository_check_failed"], {:name=>"index_projects_on_last_repository_check_failed", :using=>:btree})
   -> 0.0148s
-- add_index("projects", ["last_repository_updated_at"], {:name=>"index_projects_on_last_repository_updated_at", :using=>:btree})
   -> 0.0141s
-- add_index("projects", ["mirror_last_successful_update_at"], {:name=>"index_projects_on_mirror_last_successful_update_at", :using=>:btree})
   -> 0.0154s
-- add_index("projects", ["namespace_id"], {:name=>"index_projects_on_namespace_id", :using=>:btree})
   -> 0.0147s
-- add_index("projects", ["path"], {:name=>"index_projects_on_path", :using=>:btree})
   -> 0.0165s
-- add_index("projects", ["pending_delete"], {:name=>"index_projects_on_pending_delete", :using=>:btree})
   -> 0.0155s
-- add_index("projects", ["runners_token"], {:name=>"index_projects_on_runners_token", :using=>:btree})
   -> 0.0218s
-- add_index("projects", ["star_count"], {:name=>"index_projects_on_star_count", :using=>:btree})
   -> 0.0371s
-- add_index("projects", ["visibility_level"], {:name=>"index_projects_on_visibility_level", :using=>:btree})
   -> 0.0211s
-- create_table("protected_branch_merge_access_levels", {:force=>:cascade})
   -> 0.0133s
-- add_index("protected_branch_merge_access_levels", ["group_id"], {:name=>"fk_rails_98f3d044fe", :using=>:btree})
   -> 0.0194s
-- add_index("protected_branch_merge_access_levels", ["protected_branch_id"], {:name=>"index_protected_branch_merge_access", :using=>:btree})
   -> 0.0178s
-- add_index("protected_branch_merge_access_levels", ["user_id"], {:name=>"index_protected_branch_merge_access_levels_on_user_id", :using=>:btree})
   -> 0.0186s
-- create_table("protected_branch_push_access_levels", {:force=>:cascade})
   -> 0.0201s
-- add_index("protected_branch_push_access_levels", ["group_id"], {:name=>"fk_rails_7111b68cdb", :using=>:btree})
   -> 0.0141s
-- add_index("protected_branch_push_access_levels", ["protected_branch_id"], {:name=>"index_protected_branch_push_access", :using=>:btree})
   -> 0.0143s
-- add_index("protected_branch_push_access_levels", ["user_id"], {:name=>"index_protected_branch_push_access_levels_on_user_id", :using=>:btree})
   -> 0.0248s
-- create_table("protected_branches", {:force=>:cascade})
   -> 0.0140s
-- add_index("protected_branches", ["project_id"], {:name=>"index_protected_branches_on_project_id", :using=>:btree})
   -> 0.0345s
-- create_table("protected_tag_create_access_levels", {:force=>:cascade})
   -> 0.0132s
-- add_index("protected_tag_create_access_levels", ["group_id"], {:name=>"fk_rails_b4eb82fe3c", :using=>:btree})
   -> 0.0158s
-- add_index("protected_tag_create_access_levels", ["protected_tag_id"], {:name=>"index_protected_tag_create_access", :using=>:btree})
   -> 0.0185s
-- add_index("protected_tag_create_access_levels", ["user_id"], {:name=>"index_protected_tag_create_access_levels_on_user_id", :using=>:btree})
   -> 0.0162s
-- create_table("protected_tags", {:force=>:cascade})
   -> 0.0134s
-- add_index("protected_tags", ["project_id"], {:name=>"index_protected_tags_on_project_id", :using=>:btree})
   -> 0.0163s
-- create_table("push_event_payloads", {:id=>false, :force=>:cascade})
   -> 0.0210s
-- add_index("push_event_payloads", ["event_id"], {:name=>"index_push_event_payloads_on_event_id", :unique=>true, :using=>:btree})
   -> 0.0227s
-- create_table("push_rules", {:force=>:cascade})
   -> 0.0149s
-- add_index("push_rules", ["project_id"], {:name=>"index_push_rules_on_project_id", :using=>:btree})
   -> 0.0285s
-- create_table("redirect_routes", {:force=>:cascade})
   -> 0.0144s
-- add_index("redirect_routes", ["path"], {:name=>"index_redirect_routes_on_path", :unique=>true, :using=>:btree})
   -> 0.0154s
-- add_index("redirect_routes", ["source_type", "source_id"], {:name=>"index_redirect_routes_on_source_type_and_source_id", :using=>:btree})
   -> 0.0175s
-- create_table("releases", {:force=>:cascade})
   -> 0.0163s
-- add_index("releases", ["project_id", "tag"], {:name=>"index_releases_on_project_id_and_tag", :using=>:btree})
   -> 0.0177s
-- add_index("releases", ["project_id"], {:name=>"index_releases_on_project_id", :using=>:btree})
   -> 0.0259s
-- create_table("remote_mirrors", {:force=>:cascade})
   -> 0.0154s
-- add_index("remote_mirrors", ["last_successful_update_at"], {:name=>"index_remote_mirrors_on_last_successful_update_at", :using=>:btree})
   -> 0.0169s
-- add_index("remote_mirrors", ["project_id"], {:name=>"index_remote_mirrors_on_project_id", :using=>:btree})
   -> 0.0167s
-- create_table("routes", {:force=>:cascade})
   -> 0.0331s
-- add_index("routes", ["path"], {:name=>"index_routes_on_path", :unique=>true, :using=>:btree})
   -> 0.0196s
-- add_index("routes", ["source_type", "source_id"], {:name=>"index_routes_on_source_type_and_source_id", :unique=>true, :using=>:btree})
   -> 0.0183s
-- create_table("sent_notifications", {:force=>:cascade})
   -> 0.0153s
-- add_index("sent_notifications", ["reply_key"], {:name=>"index_sent_notifications_on_reply_key", :unique=>true, :using=>:btree})
   -> 0.0252s
-- create_table("services", {:force=>:cascade})
   -> 0.0159s
-- add_index("services", ["project_id"], {:name=>"index_services_on_project_id", :using=>:btree})
   -> 0.0148s
-- add_index("services", ["template"], {:name=>"index_services_on_template", :using=>:btree})
   -> 0.0191s
-- create_table("slack_integrations", {:force=>:cascade})
   -> 0.0140s
-- add_index("slack_integrations", ["service_id"], {:name=>"index_slack_integrations_on_service_id", :using=>:btree})
   -> 0.0148s
-- add_index("slack_integrations", ["team_id", "alias"], {:name=>"index_slack_integrations_on_team_id_and_alias", :unique=>true, :using=>:btree})
   -> 0.0242s
-- create_table("snippets", {:force=>:cascade})
   -> 0.0210s
-- add_index("snippets", ["author_id"], {:name=>"index_snippets_on_author_id", :using=>:btree})
   -> 0.0235s
-- add_index("snippets", ["project_id"], {:name=>"index_snippets_on_project_id", :using=>:btree})
   -> 0.0181s
-- add_index("snippets", ["updated_at"], {:name=>"index_snippets_on_updated_at", :using=>:btree})
   -> 0.0155s
-- add_index("snippets", ["visibility_level"], {:name=>"index_snippets_on_visibility_level", :using=>:btree})
   -> 0.0178s
-- create_table("spam_logs", {:force=>:cascade})
   -> 0.0180s
-- create_table("subscriptions", {:force=>:cascade})
   -> 0.0129s
-- add_index("subscriptions", ["project_id"], {:name=>"fk_rails_d0c8bda804", :using=>:btree})
   -> 0.0224s
-- add_index("subscriptions", ["subscribable_id", "subscribable_type", "user_id", "project_id"], {:name=>"index_subscriptions_on_subscribable_and_user_id_and_project_id", :unique=>true, :using=>:btree})
   -> 0.0177s
-- create_table("system_note_metadata", {:force=>:cascade})
   -> 0.0260s
-- add_index("system_note_metadata", ["note_id"], {:name=>"index_system_note_metadata_on_note_id", :unique=>true, :using=>:btree})
   -> 0.0361s
-- create_table("taggings", {:force=>:cascade})
   -> 0.0189s
-- add_index("taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], {:name=>"taggings_idx", :unique=>true, :using=>:btree})
   -> 0.0191s
-- add_index("taggings", ["taggable_id", "taggable_type", "context"], {:name=>"index_taggings_on_taggable_id_and_taggable_type_and_context", :using=>:btree})
   -> 0.0212s
-- create_table("tags", {:force=>:cascade})
   -> 0.0202s
-- add_index("tags", ["name"], {:name=>"index_tags_on_name", :unique=>true, :using=>:btree})
   -> 0.0197s
-- create_table("timelogs", {:force=>:cascade})
   -> 0.0179s
-- add_index("timelogs", ["issue_id"], {:name=>"index_timelogs_on_issue_id", :using=>:btree})
   -> 0.0188s
-- add_index("timelogs", ["merge_request_id"], {:name=>"index_timelogs_on_merge_request_id", :using=>:btree})
   -> 0.0139s
-- add_index("timelogs", ["user_id"], {:name=>"index_timelogs_on_user_id", :using=>:btree})
   -> 0.0200s
-- create_table("todos", {:force=>:cascade})
   -> 0.0215s
-- add_index("todos", ["author_id"], {:name=>"index_todos_on_author_id", :using=>:btree})
   -> 0.0167s
-- add_index("todos", ["commit_id"], {:name=>"index_todos_on_commit_id", :using=>:btree})
   -> 0.0152s
-- add_index("todos", ["note_id"], {:name=>"index_todos_on_note_id", :using=>:btree})
   -> 0.0241s
-- add_index("todos", ["project_id"], {:name=>"index_todos_on_project_id", :using=>:btree})
   -> 0.0237s
-- add_index("todos", ["target_type", "target_id"], {:name=>"index_todos_on_target_type_and_target_id", :using=>:btree})
   -> 0.0240s
-- add_index("todos", ["user_id"], {:name=>"index_todos_on_user_id", :using=>:btree})
   -> 0.0161s
-- create_table("trending_projects", {:force=>:cascade})
   -> 0.0296s
-- add_index("trending_projects", ["project_id"], {:name=>"index_trending_projects_on_project_id", :using=>:btree})
   -> 0.0159s
-- create_table("u2f_registrations", {:force=>:cascade})
   -> 0.0314s
-- add_index("u2f_registrations", ["key_handle"], {:name=>"index_u2f_registrations_on_key_handle", :using=>:btree})
   -> 0.0163s
-- add_index("u2f_registrations", ["user_id"], {:name=>"index_u2f_registrations_on_user_id", :using=>:btree})
   -> 0.0225s
-- create_table("uploads", {:force=>:cascade})
   -> 0.0224s
-- add_index("uploads", ["checksum"], {:name=>"index_uploads_on_checksum", :using=>:btree})
   -> 0.0155s
-- add_index("uploads", ["model_id", "model_type"], {:name=>"index_uploads_on_model_id_and_model_type", :using=>:btree})
   -> 0.0184s
-- add_index("uploads", ["path"], {:name=>"index_uploads_on_path", :using=>:btree})
   -> 0.0140s
-- create_table("user_agent_details", {:force=>:cascade})
   -> 0.0131s
-- add_index("user_agent_details", ["subject_id", "subject_type"], {:name=>"index_user_agent_details_on_subject_id_and_subject_type", :using=>:btree})
   -> 0.0242s
-- create_table("users", {:force=>:cascade})
   -> 0.0194s
-- add_index("users", ["admin"], {:name=>"index_users_on_admin", :using=>:btree})
   -> 0.0332s
-- add_index("users", ["authentication_token"], {:name=>"index_users_on_authentication_token", :unique=>true, :using=>:btree})
   -> 0.0168s
-- add_index("users", ["confirmation_token"], {:name=>"index_users_on_confirmation_token", :unique=>true, :using=>:btree})
   -> 0.0152s
-- add_index("users", ["created_at"], {:name=>"index_users_on_created_at", :using=>:btree})
   -> 0.0173s
-- add_index("users", ["email"], {:name=>"index_users_on_email", :unique=>true, :using=>:btree})
   -> 0.0198s
-- add_index("users", ["ghost"], {:name=>"index_users_on_ghost", :using=>:btree})
   -> 0.0163s
-- add_index("users", ["incoming_email_token"], {:name=>"index_users_on_incoming_email_token", :using=>:btree})
   -> 0.0192s
-- add_index("users", ["name"], {:name=>"index_users_on_name", :using=>:btree})
   -> 0.0182s
-- add_index("users", ["reset_password_token"], {:name=>"index_users_on_reset_password_token", :unique=>true, :using=>:btree})
   -> 0.0162s
-- add_index("users", ["rss_token"], {:name=>"index_users_on_rss_token", :using=>:btree})
   -> 0.0271s
-- add_index("users", ["state"], {:name=>"index_users_on_state", :using=>:btree})
   -> 0.0191s
-- add_index("users", ["support_bot"], {:name=>"index_users_on_support_bot", :using=>:btree})
   -> 0.0170s
-- add_index("users", ["username"], {:name=>"index_users_on_username", :using=>:btree})
   -> 0.0170s
-- create_table("users_star_projects", {:force=>:cascade})
   -> 0.0155s
-- add_index("users_star_projects", ["project_id"], {:name=>"index_users_star_projects_on_project_id", :using=>:btree})
   -> 0.0155s
-- add_index("users_star_projects", ["user_id", "project_id"], {:name=>"index_users_star_projects_on_user_id_and_project_id", :unique=>true, :using=>:btree})
   -> 0.0260s
-- create_table("web_hook_logs", {:force=>:cascade})
   -> 0.0149s
-- add_index("web_hook_logs", ["web_hook_id"], {:name=>"index_web_hook_logs_on_web_hook_id", :using=>:btree})
   -> 0.0188s
-- create_table("web_hooks", {:force=>:cascade})
   -> 0.0221s
-- add_index("web_hooks", ["project_id"], {:name=>"index_web_hooks_on_project_id", :using=>:btree})
   -> 0.0172s
-- add_index("web_hooks", ["type"], {:name=>"index_web_hooks_on_type", :using=>:btree})
   -> 0.0331s
-- add_foreign_key("approvals", "merge_requests", {:on_delete=>:cascade})
   -> 0.0183s
-- add_foreign_key("approver_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})
   -> 0.0305s
-- add_foreign_key("boards", "namespaces", {:column=>"group_id", :on_delete=>:cascade})
   -> 0.0173s
-- add_foreign_key("boards", "projects", {:name=>"fk_f15266b5f9", :on_delete=>:cascade})
   -> 0.0215s
-- add_foreign_key("chat_teams", "namespaces", {:on_delete=>:cascade})
   -> 0.0216s
-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_a2141b1522", :on_delete=>:nullify})
   -> 0.0229s
-- add_foreign_key("ci_builds", "ci_stages", {:column=>"stage_id", :on_delete=>:cascade})
   -> 0.0234s
-- add_foreign_key("ci_builds", "projects", {:name=>"fk_befce0568a", :on_delete=>:cascade})
   -> 0.0303s
-- add_foreign_key("ci_group_variables", "namespaces", {:column=>"group_id", :name=>"fk_33ae4d58d8", :on_delete=>:cascade})
   -> 0.0191s
-- add_foreign_key("ci_pipeline_schedule_variables", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :on_delete=>:cascade})
   -> 0.0237s
-- add_foreign_key("ci_pipeline_schedules", "projects", {:name=>"fk_8ead60fcc4", :on_delete=>:cascade})
   -> 0.0187s
-- add_foreign_key("ci_pipeline_schedules", "users", {:column=>"owner_id", :name=>"fk_9ea99f58d2", :on_delete=>:nullify})
   -> 0.0195s
-- add_foreign_key("ci_pipeline_variables", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})
   -> 0.0187s
-- add_foreign_key("ci_pipelines", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_3d34ab2e06", :on_delete=>:nullify})
   -> 0.0193s
-- add_foreign_key("ci_pipelines", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_262d4c2d19", :on_delete=>:nullify})
   -> 0.0218s
-- add_foreign_key("ci_pipelines", "projects", {:name=>"fk_86635dbd80", :on_delete=>:cascade})
   -> 0.0208s
-- add_foreign_key("ci_runner_projects", "projects", {:name=>"fk_4478a6f1e4", :on_delete=>:cascade})
   -> 0.0334s
-- add_foreign_key("ci_sources_pipelines", "ci_builds", {:column=>"source_job_id", :name=>"fk_be5624bf37", :on_delete=>:cascade})
   -> 0.0277s
-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_e1bad85861", :on_delete=>:cascade})
   -> 0.0236s
-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"source_pipeline_id", :name=>"fk_d4e29af7d7", :on_delete=>:cascade})
   -> 0.0224s
-- add_foreign_key("ci_sources_pipelines", "projects", {:column=>"source_project_id", :name=>"fk_acd9737679", :on_delete=>:cascade})
   -> 0.0303s
-- add_foreign_key("ci_sources_pipelines", "projects", {:name=>"fk_1e53c97c0a", :on_delete=>:cascade})
   -> 0.0188s
-- add_foreign_key("ci_stages", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_fb57e6cc56", :on_delete=>:cascade})
   -> 0.0183s
-- add_foreign_key("ci_stages", "projects", {:name=>"fk_2360681d1d", :on_delete=>:cascade})
   -> 0.0233s
-- add_foreign_key("ci_trigger_requests", "ci_triggers", {:column=>"trigger_id", :name=>"fk_b8ec8b7245", :on_delete=>:cascade})
   -> 0.0188s
-- add_foreign_key("ci_triggers", "projects", {:name=>"fk_e3e63f966e", :on_delete=>:cascade})
   -> 0.0155s
-- add_foreign_key("ci_triggers", "users", {:column=>"owner_id", :name=>"fk_e8e10d1964", :on_delete=>:cascade})
   -> 0.0215s
-- add_foreign_key("ci_variables", "projects", {:name=>"fk_ada5eb64b3", :on_delete=>:cascade})
   -> 0.0192s
-- add_foreign_key("container_repositories", "projects")
   -> 0.0187s
-- add_foreign_key("deploy_keys_projects", "projects", {:name=>"fk_58a901ca7e", :on_delete=>:cascade})
   -> 0.0225s
-- add_foreign_key("deployments", "projects", {:name=>"fk_b9a3851b82", :on_delete=>:cascade})
   -> 0.0205s
-- add_foreign_key("environments", "projects", {:name=>"fk_d1c8c1da6a", :on_delete=>:cascade})
   -> 0.0194s
-- add_foreign_key("events", "projects", {:name=>"fk_0434b48643", :on_delete=>:cascade})
   -> 0.0194s
-- add_foreign_key("events_for_migration", "projects", {:on_delete=>:cascade})
   -> 0.0172s
-- add_foreign_key("events_for_migration", "users", {:column=>"author_id", :on_delete=>:cascade})
   -> 0.0193s
-- add_foreign_key("forked_project_links", "projects", {:column=>"forked_to_project_id", :name=>"fk_434510edb0", :on_delete=>:cascade})
   -> 0.0219s
-- add_foreign_key("geo_event_log", "geo_repositories_changed_events", {:column=>"repositories_changed_event_id", :on_delete=>:cascade})
rake aborted!
ActiveRecord::StatementInvalid: Mysql2::Error: Cannot add foreign key constraint: ALTER TABLE `geo_event_log` ADD CONSTRAINT `fk_rails_4a99ebfd60`
FOREIGN KEY (`repositories_changed_event_id`)
  REFERENCES `geo_repositories_changed_events` (`id`)
 ON DELETE CASCADE
/Users/stanhu/gdk-ee-mysql/gitlab/config/initializers/connection_fix.rb:20:in `execute'
/Users/stanhu/gdk-ee-mysql/gitlab/db/schema.rb:2066:in `block in <top (required)>'
/Users/stanhu/gdk-ee-mysql/gitlab/db/schema.rb:14:in `<top (required)>'
/Users/stanhu/.rbenv/versions/2.3.6/bin/bundle:22:in `load'
/Users/stanhu/.rbenv/versions/2.3.6/bin/bundle:22:in `<main>'

Caused by:
Mysql2::Error: Cannot add foreign key constraint
/Users/stanhu/gdk-ee-mysql/gitlab/config/initializers/connection_fix.rb:20:in `execute'
/Users/stanhu/gdk-ee-mysql/gitlab/db/schema.rb:2066:in `block in <top (required)>'
/Users/stanhu/gdk-ee-mysql/gitlab/db/schema.rb:14:in `<top (required)>'
/Users/stanhu/.rbenv/versions/2.3.6/bin/bundle:22:in `load'
/Users/stanhu/.rbenv/versions/2.3.6/bin/bundle:22:in `<main>'
Tasks: TOP => db:schema:load
(See full trace by running task with --trace)

Geo doesn't need to work with MySQL, but it should play nicely so we can actually test on MySQL.

The MySQL SHOW ENGINE INNODB STATUS reveals this error:

------------------------
LATEST FOREIGN KEY ERROR
------------------------
2017-12-26 14:45:23 0x700000f2d000 Error in foreign key constraint of table gitlabhq_test/#sql-569a_33:
 FOREIGN KEY (`repositories_changed_event_id`) REFERENCES `geo_repositories_changed_events` (`id`) ON DELETE CASCADE:
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.
Note that the internal storage type of ENUM and SET changed in
tables created with >= InnoDB-4.1.12, and such columns in old tables
cannot be referenced by such columns in new tables.
Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constraints.html for correct foreign key definition.
mysql> describe geo_event_log;
+-------------------------------+------------+------+-----+---------+----------------+
| Field                         | Type       | Null | Key | Default | Extra          |
+-------------------------------+------------+------+-----+---------+----------------+
| id                            | int(11)    | NO   | PRI | NULL    | auto_increment |
| created_at                    | datetime   | NO   |     | NULL    |                |
| repository_updated_event_id   | bigint(20) | YES  | MUL | NULL    |                |
| repository_deleted_event_id   | bigint(20) | YES  | MUL | NULL    |                |
| repository_renamed_event_id   | bigint(20) | YES  | MUL | NULL    |                |
| repositories_changed_event_id | bigint(20) | YES  | MUL | NULL    |                |
| repository_created_event_id   | bigint(20) | YES  | MUL | NULL    |                |
+-------------------------------+------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

mysql> describe geo_repositories_changed_events;
+-------------+---------+------+-----+---------+----------------+
| Field       | Type    | Null | Key | Default | Extra          |
+-------------+---------+------+-----+---------+----------------+
| id          | int(11) | NO   | PRI | NULL    | auto_increment |
| geo_node_id | int(11) | NO   | MUL | NULL    |                |
+-------------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> show index from geo_event_log;
+---------------+------------+----------------------------------------------------+--------------+-------------------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table         | Non_unique | Key_name                                           | Seq_in_index | Column_name                   | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------------+------------+----------------------------------------------------+--------------+-------------------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| geo_event_log |          0 | PRIMARY                                            |            1 | id                            | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| geo_event_log |          1 | fk_rails_4a99ebfd60                                |            1 | repositories_changed_event_id | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
| geo_event_log |          1 | index_geo_event_log_on_repository_created_event_id |            1 | repository_created_event_id   | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
| geo_event_log |          1 | fk_rails_c4b1c1f66e                                |            1 | repository_deleted_event_id   | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
| geo_event_log |          1 | fk_rails_86c84214ec                                |            1 | repository_renamed_event_id   | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
| geo_event_log |          1 | index_geo_event_log_on_repository_updated_event_id |            1 | repository_updated_event_id   | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
+---------------+------------+----------------------------------------------------+--------------+-------------------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
6 rows in set (0.00 sec)

mysql> show index from geo_repositories_changed_events;
+---------------------------------+------------+------------------------------------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table                           | Non_unique | Key_name                                             | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------------------------------+------------+------------------------------------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| geo_repositories_changed_events |          0 | PRIMARY                                              |            1 | id          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| geo_repositories_changed_events |          1 | index_geo_repositories_changed_events_on_geo_node_id |            1 | geo_node_id | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
+---------------------------------+------------+------------------------------------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)
Assignee Loading
Time tracking Loading