Estoy ejecutando un entorno linux red hat de AWS.
He seguido todas las instrucciones para actualizar sqlite3 a la versión "más reciente".
Estoy ejecutando python 3.9.2 (y lo he vuelto a compilar con LD_RUN_PATH=/usr/local/lib ./configure ) y django versión 4.
He configurado un entorno virtual para instalar y ejecutar django. Cambié el script de activación para incluir export LD_LIBRARY_PATH="/usr/local/lib"
Al ejecutar python manage.py runserver , aparece el error django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher . Abrí el archivo /home/ec2-user/django/django/db/backends/sqlite3/base.py (donde ocurre el error) y justo después de la línea con el error incluí una declaración de impresión:
print("**************************\n" + str(Database.sqlite_version) + "\n" + str(Database.sqlite_version_info) + "\n**************************")que devuelve:
************************** 3.28.0 (3, 28, 0) ************************** ************************** 3.28.0 (3, 28, 0) ************************** Por favor, hágame saber qué información adicional se necesita. He buscado arriba y abajo en la stack y no puedo encontrar la solución adecuada para pop esta.
¡Gracias de antemano!
EDITAR
Aquí está el rastreo:
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). Exception in thread django-main-thread: Traceback (most recent call last): File "/home/ec2-user/django/django/db/backends/base/base.py", line 219, in ensure_connection self.connect() File "/home/ec2-user/django/django/utils/asyncio.py", 21 in inner return func(*args, **kwargs) File "/home/ec2-user/django/django/db/backends/base/base.py", line 200, in connect self.connection = self.get_new_connection(conn_params) File "/home/ec2-user/django/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/home/ec2-user/django/django/db/backends/sqlite3/base.py", line 210, in get_new_connection create_deterministic_function('django_date_extract', 2, _sqlite_datetime_extract) sqlite3.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/opt/python/lib/python/3.9/threading.py", line 954, in _bootstrap_inner self.run() File "/opt/python39/lib/python3.9/threading.py", line 892, in run self._target(*self._args, **self._kwargs) File "/home/ec2-user/django/django/utils/autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "/home/ec2-user/django/django/core/management/commands/runserver.py", line 126, in inner_run self.check_migrations() File "/home/ec2-user/django/django/core/management/base.py", line 486, in check_migrations executor = MigrationExecutor(connectsion[DEFAULT_DB_ALIAS]) File "/home/ec2-user/django/django/db/migrations/executor.py", line 18, in __init__ self.loader = MigrationLoader(self.connection) File "/home/ec2-user/django/django/db/migrations/loader.py", line 53, in __init__ self.build_graph() File "/home/ec2-user/django/django/db/migrations/loader.py", line 220, in build_graph self.applied_migrations = recorder.applied_migrations() File "/home/ec2-user/django/django/db/migrations/recorder.py", line 77, in applied_migrations if self.has_table(): File "/home/ec2-user/django/django/db/migrations/recorder.py", line 55, in has_table with self.connection.cursor() as cursor: File "/home/ec2-user/django/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/home/ec2-user/django/django/db/backends/base/base.py", line 259, in cursor return self._cursor() File "/home/ec2-user/django/django/db/backends/base/base.py", line 235, in _cursor self.ensure_connection() File "/home/ec2-user/django/djanog/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/home/ec2-user/django/django/db/backends/base/base.py", line 219, in ensure_connection self.connect() File "/home/ec2-user/django/django/db/utils.py", line 90, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/home/ec2-user/django/django/db/backends/base/base.py", line 219, in ensure_connection self.connect() File "/home/ec2-user/django/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/home/ec2-user/django/django/db/backends/base/base.py", line 200, in connect self.connection = self.get_new_connection(conn_params) File "/home/ec2-user/django/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/home/ec2-user/django/django/db/backends/sqlite3/base.py", line 210, in get_new_connection create_deterministic_function('django_date_extract', 2, _sqlite_datetime_extract) django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higherLo mejor que puedo imaginar en este momento es ir a /home/ec2-user/django/django/db/backends/sqlite3/base.py , cambiar la variable de función deterministic=True en get_new_connection() a deterministic=False .. .
Esto eliminará el error, pero parece una solución súper engañosa. Si alguien tiene una mejor solución, por favor hágamelo saber.
Encontré el mismo problema en mi Linux Centos7+python3.9.6+Django3.2.5. Aunque el sqlite3 está actualizado a la última versión. Parece que esto es inútil. Un tipo de solución es cambiar la base de datos de sqlite3 a pysqlite3. Después de activar virtualenv, instale pysqlite
pip3 install pysqlite3 pip3 install pysqlite3-binaryy cambiar db en base.py
vim python3.9.6/site-packages/django/db/backends/sqlite3/base.py # from sqlite3 import dbapi2 as Database # annotation from pysqlite3 import dbapi2 as Database # import pysqlite3reinicie el servidor django y funciona.
Tengo el mismo problema que el tuyo. cuando traté de implementar en Elastic Beanstalk . En mi caso, usé Python 3.8 cuando inicié EB CLI de esta manera:
eb init -p python-3.8 django-project ⛔y que no es una buena versión de Python para ejecutarlo en Amazon Linux 2 de 64 bits (predeterminado). cambiar a python-3.7
eb init -p python-3.7 django-project ✅