diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py index a76ca3c0df..e625c28ae4 100644 --- a/django/db/backends/postgresql_psycopg2/base.py +++ b/django/db/backends/postgresql_psycopg2/base.py @@ -198,7 +198,7 @@ class DatabaseWrapper(BaseDatabaseWrapper): tz = self.settings_dict['TIME_ZONE'] conn_tz = self.connection.get_parameter_status('TimeZone') - if conn_tz != tz: + if tz and conn_tz != tz: cursor = self.connection.cursor() try: cursor.execute(self.ops.set_time_zone_sql(), [tz]) diff --git a/django/test/signals.py b/django/test/signals.py index 0c2bf5201c..fd3de51f2c 100644 --- a/django/test/signals.py +++ b/django/test/signals.py @@ -73,7 +73,7 @@ def update_connections_time_zone(**kwargs): for conn in connections.all(): conn.settings_dict['TIME_ZONE'] = tz tz_sql = conn.ops.set_time_zone_sql() - if tz_sql: + if tz_sql and tz: conn.cursor().execute(tz_sql, [tz]) diff --git a/docs/releases/1.8.10.txt b/docs/releases/1.8.10.txt index d680bad687..c9e77552e6 100644 --- a/docs/releases/1.8.10.txt +++ b/docs/releases/1.8.10.txt @@ -9,4 +9,5 @@ Django 1.8.10 fixes several bugs in 1.8.9. Bugfixes ======== -* ... +* Fixed a crash on PostgreSQL that prevented using ``TIME_ZONE=None`` and + ``USE_TZ=False`` (:ticket:`26177`). diff --git a/tests/backends/tests.py b/tests/backends/tests.py index e4b277a95a..a645d9f23e 100644 --- a/tests/backends/tests.py +++ b/tests/backends/tests.py @@ -804,6 +804,11 @@ class BackendTestCase(TransactionTestCase): BaseDatabaseWrapper.queries_limit = old_queries_limit new_connection.close() + def test_timezone_none_use_tz_false(self): + connection.ensure_connection() + with self.settings(TIME_ZONE=None, USE_TZ=False): + connection.init_connection_state() + # We don't make these tests conditional because that means we would need to # check and differentiate between: