diff --git a/django/contrib/postgres/operations.py b/django/contrib/postgres/operations.py index b25438b826..7c28bc48ce 100644 --- a/django/contrib/postgres/operations.py +++ b/django/contrib/postgres/operations.py @@ -23,7 +23,7 @@ class CreateExtension(Operation): return if not self.extension_exists(schema_editor, self.name): schema_editor.execute( - 'CREATE EXTENSION %s' % schema_editor.quote_name(self.name) + 'CREATE EXTENSION IF NOT EXISTS %s' % schema_editor.quote_name(self.name) ) # Clear cached, stale oids. get_hstore_oids.cache_clear() @@ -38,7 +38,7 @@ class CreateExtension(Operation): return if self.extension_exists(schema_editor, self.name): schema_editor.execute( - 'DROP EXTENSION %s' % schema_editor.quote_name(self.name) + 'DROP EXTENSION IF EXISTS %s' % schema_editor.quote_name(self.name) ) # Clear cached, stale oids. get_hstore_oids.cache_clear() diff --git a/tests/postgres_tests/test_operations.py b/tests/postgres_tests/test_operations.py index a10f5da440..114c141a61 100644 --- a/tests/postgres_tests/test_operations.py +++ b/tests/postgres_tests/test_operations.py @@ -183,13 +183,13 @@ class CreateExtensionTests(PostgreSQLTestCase): with connection.schema_editor(atomic=False) as editor: operation.database_forwards(self.app_label, editor, project_state, new_state) self.assertEqual(len(captured_queries), 4) - self.assertIn('CREATE EXTENSION', captured_queries[1]['sql']) + self.assertIn('CREATE EXTENSION IF NOT EXISTS', captured_queries[1]['sql']) # Reversal. with CaptureQueriesContext(connection) as captured_queries: with connection.schema_editor(atomic=False) as editor: operation.database_backwards(self.app_label, editor, new_state, project_state) self.assertEqual(len(captured_queries), 2) - self.assertIn('DROP EXTENSION', captured_queries[1]['sql']) + self.assertIn('DROP EXTENSION IF EXISTS', captured_queries[1]['sql']) def test_create_existing_extension(self): operation = BloomExtension()