diff --git a/django/db/models/base.py b/django/db/models/base.py
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -717,7 +717,7 @@
             if len(unique_check) != len(lookup_kwargs.keys()):
                 continue
 
-            qs = model_class._default_manager.filter(**lookup_kwargs)
+            qs = model_class._default_manager.using(self._state.db).filter(**lookup_kwargs)
 
             # Exclude the current object from the query if we are editing an
             # instance (as opposed to creating a new one)
@@ -750,7 +750,7 @@
                 lookup_kwargs['%s__%s' % (unique_for, lookup_type)] = getattr(date, lookup_type)
             lookup_kwargs[field] = getattr(self, field)
 
-            qs = model_class._default_manager.filter(**lookup_kwargs)
+            qs = model_class._default_manager.using(self._state.db).filter(**lookup_kwargs)
             # Exclude the current object from the query if we are editing an
             # instance (as opposed to creating a new one)
             if not self._state.adding and self.pk is not None:
diff --git a/tests/modeltests/validation/test_unique.py b/tests/modeltests/validation/test_unique.py
--- a/tests/modeltests/validation/test_unique.py
+++ b/tests/modeltests/validation/test_unique.py
@@ -149,3 +149,53 @@
             self.fail("unique_for_month checks shouldn't trigger when the associated DateField is None.")
         except:
             self.fail("unique_for_month checks shouldn't explode when the associated DateField is None.")
+
+class MultiDbUniqueTests(TestCase):
+    multi_db = True
+
+    def test_unique_checks_multi_db_isolation_unique(self):
+        UniqueFieldsModel(unique_charfield='Hello world', unique_integerfield=42, non_unique_field=3).save(using='default')
+        m = UniqueFieldsModel(unique_charfield='Hello world', unique_integerfield=42, non_unique_field=3)
+        m._state.db = 'other'
+        try:
+            m.full_clean()
+        except ValidationError:
+            self.fail("unique field validation shouldn't erroneosuly trigger when the identical model instances are on different databases.")
+        except:
+            raise
+        else:
+            m.save()
+            self.assertEqual(UniqueFieldsModel.objects.using('default').count(), 1)
+            self.assertEqual(UniqueFieldsModel.objects.using('other').count(), 1)
+
+    def test_unique_checks_multi_db_isolation_unique_together(self):
+        UniqueTogetherModel(cfield='Hello world', ifield=42, efield='user@example.org').save(using='default')
+        m = UniqueTogetherModel(cfield='Hello world', ifield=42, efield='user@example.org')
+        m._state.db = 'other'
+        try:
+            m.full_clean()
+        except ValidationError:
+            self.fail("Meta.unique_together validation shouldn't erroneosuly trigger when the identical model instances are on different databases.")
+        except:
+            raise
+        else:
+            m.save()
+            self.assertEqual(UniqueTogetherModel.objects.using('default').count(), 1)
+            self.assertEqual(UniqueTogetherModel.objects.using('other').count(), 1)
+
+    def test_unique_checks_multi_db_isolation_unique_for_x(self):
+        today = datetime.date.today()
+        now = datetime.datetime.now()
+        UniqueForDateModel(start_date=today, end_date=now, count=314, order=21, name='Foo').save(using='default')
+        m = UniqueForDateModel(start_date=today, end_date=now, count=314, order=21, name='Foo')
+        m._state.db = 'other'
+        try:
+            m.full_clean()
+        except ValidationError:
+            self.fail("Meta.unique_for_* validation shouldn't erroneosuly trigger when the identical model instances are on different databases.")
+        except:
+            raise
+        else:
+            m.save()
+            self.assertEqual(UniqueForDateModel.objects.using('default').count(), 1)
+            self.assertEqual(UniqueForDateModel.objects.using('other').count(), 1)
diff --git a/tests/modeltests/validation/tests.py b/tests/modeltests/validation/tests.py
--- a/tests/modeltests/validation/tests.py
+++ b/tests/modeltests/validation/tests.py
@@ -7,7 +7,7 @@
 # Import other tests for this package.
 from modeltests.validation.validators import TestModelsWithValidators
 from modeltests.validation.test_unique import (GetUniqueCheckTests,
-    PerformUniqueChecksTest)
+    PerformUniqueChecksTest, MultiDbUniqueTests)
 from modeltests.validation.test_custom_messages import CustomMessagesTest
 
 
