Closes #22141: Deprecate support for PostgreSQL 14 (#22142)

This commit is contained in:
Jeremy Stretch 2026-05-07 11:14:02 -04:00 committed by GitHub
parent e50aff8736
commit 734a69c9a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 44 additions and 6 deletions

View File

@ -59,7 +59,7 @@ See the [`DATABASES`](#databases) configuration below for usage.
## DATABASES
NetBox requires access to a PostgreSQL 14 or later database service to store data. This service can run locally on the NetBox server or on a remote system. Databases are defined as named dictionaries:
NetBox requires access to a PostgreSQL 14 or later database service to store data. Note that support for PostgreSQL 14 is deprecated and will be removed in NetBox v4.7; PostgreSQL 15 or later will be required. This service can run locally on the NetBox server or on a remote system. Databases are defined as named dictionaries:
```python
DATABASES = {

View File

@ -5,6 +5,9 @@ This section entails the installation and configuration of a local PostgreSQL da
!!! warning "PostgreSQL 14 or later required"
NetBox requires PostgreSQL 14 or later. Please note that MySQL and other relational databases are **not** supported.
!!! warning "PostgreSQL 14 deprecation notice"
Support for PostgreSQL 14 is deprecated as of NetBox v4.6 and will be removed in NetBox v4.7. Please plan to upgrade to PostgreSQL 15 or later.
## Installation
```no-highlight

View File

@ -28,9 +28,11 @@ The following sections detail how to set up a new instance of NetBox:
| Dependency | Supported Versions |
|------------|--------------------|
| Python | 3.12, 3.13, 3.14 |
| PostgreSQL | 14+ |
| PostgreSQL | 14+ [^1] |
| Redis | 4.0+ |
[^1]: Support for PostgreSQL 14 is deprecated and will be removed in NetBox v4.7. PostgreSQL 15 or later will be required.
Below is a simplified overview of the NetBox application stack for reference:
![NetBox UI as seen by a non-authenticated user](../media/installation/netbox_application_stack.png)

View File

@ -20,13 +20,16 @@ NetBox requires the following dependencies:
| Dependency | Supported Versions |
|------------|--------------------|
| Python | 3.12, 3.13, 3.14 |
| PostgreSQL | 14+ |
| PostgreSQL | 14+ [^1] |
| Redis | 4.0+ |
[^1]: Support for PostgreSQL 14 is deprecated and will be removed in NetBox v4.7. PostgreSQL 15 or later will be required.
### Version History
| NetBox Version | Python min | Python max | PostgreSQL min | Redis min | Documentation |
|:--------------:|:----------:|:----------:|:--------------:|:---------:|:-----------------------------------------------------------------------------------------:|
| 4.6 | 3.12 | 3.14 | 14 | 4.0 | [Link](https://github.com/netbox-community/netbox/blob/v4.6.0/docs/installation/index.md) |
| 4.5 | 3.12 | 3.14 | 14 | 4.0 | [Link](https://github.com/netbox-community/netbox/blob/v4.5.0/docs/installation/index.md) |
| 4.4 | 3.10 | 3.12 | 14 | 4.0 | [Link](https://github.com/netbox-community/netbox/blob/v4.4.0/docs/installation/index.md) |
| 4.3 | 3.10 | 3.12 | 14 | 4.0 | [Link](https://github.com/netbox-community/netbox/blob/v4.3.0/docs/installation/index.md) |

View File

@ -79,5 +79,7 @@ NetBox is built on the [Django](https://djangoproject.com/) Python framework and
| HTTP service | nginx or Apache |
| WSGI service | gunicorn or uWSGI |
| Application | Django/Python |
| Database | PostgreSQL 14+ |
| Database | PostgreSQL 14+ [^1] |
| Task queuing | Redis/django-rq |
[^1]: Support for PostgreSQL 14 is deprecated and will be removed in NetBox v4.7. PostgreSQL 15 or later will be required.

View File

@ -22,7 +22,7 @@ class CoreConfig(AppConfig):
def ready(self):
from core.api import schema # noqa: F401
from core.checks import check_duplicate_indexes # noqa: F401
from core.checks import check_duplicate_indexes, check_postgresql_version # noqa: F401
from netbox import context_managers # noqa: F401
from netbox.models.features import register_models

View File

@ -1,9 +1,11 @@
from django.apps import apps
from django.core.checks import Error, Tags, register
from django.core.checks import Error, Tags, Warning, register
from django.db import connection
from django.db.models import Index, UniqueConstraint
__all__ = (
'check_duplicate_indexes',
'check_postgresql_version',
)
@ -39,3 +41,29 @@ def check_duplicate_indexes(app_configs, **kwargs):
)
return errors
@register(Tags.database)
def check_postgresql_version(app_configs, **kwargs):
"""
Warn if the PostgreSQL version is less than 15, as support for PostgreSQL 14
will be removed in NetBox v4.7.
"""
warnings = []
try:
with connection.cursor() as cursor:
cursor.execute('SHOW server_version_num')
row = cursor.fetchone()
pg_version = int(row[0])
if pg_version < 150000:
major_version = pg_version // 10000
warnings.append(
Warning(
f'Support for PostgreSQL {major_version} is deprecated and will be removed in NetBox v4.7.',
hint='Please upgrade to PostgreSQL 15 or later.',
id='netbox.W001',
)
)
except Exception:
pass
return warnings