diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py
index ca9ed67fb5b52905ffce6414068687eb2c499ad9..001f96d1ff3e7ce8be64eac07d38815ab1c27699 100644
--- a/lib/spack/spack/database.py
+++ b/lib/spack/spack/database.py
@@ -1128,6 +1128,12 @@ def _remove(self, spec):
 
         del self._data[key]
         for dep in rec.spec.dependencies(_tracked_deps):
+            # FIXME: the two lines below needs to be updated once #11983 is
+            # FIXME: fixed. The "if" statement should be deleted and specs are
+            # FIXME: to be removed from dependents by hash and not by name.
+            # FIXME: See https://github.com/spack/spack/pull/15777#issuecomment-607818955
+            if dep._dependents.get(spec.name):
+                del dep._dependents[spec.name]
             self._decrement_ref_count(dep)
 
         if rec.deprecated_for:
diff --git a/lib/spack/spack/test/cmd/uninstall.py b/lib/spack/spack/test/cmd/uninstall.py
index 882f075ec7b1bb476f2b04253a08e86c38754f6a..a5adcdc74b01eb589d078fa676b257579de3c564 100644
--- a/lib/spack/spack/test/cmd/uninstall.py
+++ b/lib/spack/spack/test/cmd/uninstall.py
@@ -4,6 +4,7 @@
 # SPDX-License-Identifier: (Apache-2.0 OR MIT)
 
 import pytest
+import llnl.util.tty as tty
 import spack.store
 from spack.main import SpackCommand, SpackCommandError
 
@@ -30,7 +31,7 @@ def test_multiple_matches(mutable_database):
 
 @pytest.mark.db
 def test_installed_dependents(mutable_database):
-    """Test can't uninstall when ther are installed dependents."""
+    """Test can't uninstall when there are installed dependents."""
     with pytest.raises(SpackCommandError):
         uninstall('-y', 'libelf')
 
@@ -155,3 +156,16 @@ def db_specs():
     assert len(mpileaks_specs) == 3
     assert len(callpath_specs) == 3  # back to 3
     assert len(mpi_specs) == 3
+
+
+@pytest.mark.db
+@pytest.mark.regression('15773')
+def test_in_memory_consistency_when_uninstalling(
+        mutable_database, monkeypatch
+):
+    """Test that uninstalling doesn't raise warnings"""
+    def _warn(*args, **kwargs):
+        raise RuntimeError('a warning was triggered!')
+    monkeypatch.setattr(tty, 'warn', _warn)
+    # Now try to uninstall and check this doesn't trigger warnings
+    uninstall('-y', '-a')