diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
index 677b4485288fe782c9ba106e99935b6da075ddc1..909dfc4f92d9a06b0ad2b0eea21cd5a25bd26d2b 100644
--- a/lib/gitlab/database.rb
+++ b/lib/gitlab/database.rb
@@ -203,8 +203,13 @@ def self.db_config_names
     # This does not look at literal connection names, but rather compares
     # models that are holders for a given db_config_name
     def self.gitlab_schemas_for_connection(connection)
-      db_name = self.db_config_name(connection)
-      primary_model = self.database_base_models.fetch(db_name.to_sym)
+      db_config = self.db_config_for_connection(connection)
+
+      # connection might not be yet adopted (returning NullPool, and no connection_klass)
+      # in such cases it is fine to ignore such connections
+      return unless db_config
+
+      primary_model = self.database_base_models.fetch(db_config.name.to_sym)
 
       self.schemas_to_base_models.select do |_, child_models|
         child_models.any? do |child_model|
diff --git a/spec/lib/gitlab/database_spec.rb b/spec/lib/gitlab/database_spec.rb
index 23f4f0e708933f04e00e2dc96d4c11c6dfa21232..025cf05424e02218d0b2609932c398a7d1b9e8b6 100644
--- a/spec/lib/gitlab/database_spec.rb
+++ b/spec/lib/gitlab/database_spec.rb
@@ -222,10 +222,6 @@
   end
 
   describe '.gitlab_schemas_for_connection' do
-    it 'does raise exception for invalid connection' do
-      expect { described_class.gitlab_schemas_for_connection(:invalid) }.to raise_error /key not found: "unknown"/
-    end
-
     it 'does return a valid schema depending on a base model used', :request_store do
       # FF due to lib/gitlab/database/load_balancing/configuration.rb:92
       stub_feature_flags(force_no_sharing_primary_model: true)
@@ -282,6 +278,15 @@
         end
       end
     end
+
+    it 'does return empty for non-adopted connections' do
+      new_connection = ActiveRecord::Base.postgresql_connection(
+        ActiveRecord::Base.connection_db_config.configuration_hash)
+
+      expect(described_class.gitlab_schemas_for_connection(new_connection)).to be_nil
+    ensure
+      new_connection&.disconnect!
+    end
   end
 
   describe '#true_value' do