Error operativo mientras se ejecutan pruebas de unidad Django
He dockerized mi aplicación Django junto con mi base de datos postgres. Sin embargo, después de la dockerización, las pruebas de la unidad que he escrito (no el SimpleTestCase pero los TestCase) dejaron de funcionar.
Pensé que podría ser debido al nuevo db así que modifique el ajuste para las pruebas para ejecutar con el DJango db predeterminado:
import sys
if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3'
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
Aún así, tengo el siguiente error:
Creating test database for alias 'default'...
Traceback (most recent call last):
File ".../.local/lib/python3.8/site-packages/django/db/backends/utils.py", line 82, in _execute
return self.cursor.execute(sql)
File ".../.local/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 411, in execute
return Database.Cursor.execute(self, query)
sqlite3.OperationalError: near "[1]": syntax error
¿Alguna idea de cuál podría ser el problema y cómo se puede arreglar?
Pregunta hecha hace 3 años, 4 meses, 26 días - Por algorithmwizard
3 Respuestas:
-
Puedes hacerlo Esto
import sys DATABASES = None if 'test' in sys.argv: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3' } } else: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'PASSWORD': 'postgres', 'HOST': 'db', 'PORT': 5432, } }
Respondida el Dec 20, 2020 a las 22:20 - por compilercaptain7dab
Votos positivos: 0 | Votos negativos: 0 -
El error que estás viendo parece estar relacionado con la forma en que Django está tratando de crear la base de datos SQLite para las pruebas de unidad. El error "sqlite3.OperationalError: near '[1]': syntax error" indica que hay un problema de sintaxis en la creación de la base de datos SQLite.
Una posible solución a este problema es asegurarse de que estás definiendo correctamente la ruta a la base de datos SQLite en tu configuración. En lugar de usar
BASE_DIR
, puedes usar el path absoluto de la ruta a la base de datos sqlite3.python import os if 'test' in sys.argv: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3') } } else: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'PASSWORD': 'postgres', 'HOST': 'db', 'PORT': 5432, } }
Asegúrate de que estás utilizando la variable
BASE_DIR
correctamente y que la ruta a la base de datos SQLite es válida. Una vez que hagas estos ajustes, intenta ejecutar nuevamente las pruebas de unidad para ver si el error persiste.Si el problema persiste, revisa la configuración de las pruebas y la configuración de la base de datos para asegurarte de que todo esté correctamente ajustado y no haya conflictos entre la configuración de la base de datos SQLite y PostgreSQL.
Respondida el Dec 21, 2020 a las 22:17 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El error que estás experimentando se debe probablemente a un problema con la configuración de tu base de datos PostgreSQL. El mensaje de error "near \"1]\": syntax error" indica que hay un error de sintaxis en tu consulta SQL.
Para solucionar este problema, revisa lo siguiente:
- Verifica la sintaxis de tu consulta SQL: Asegúrate de que tu consulta SQL no contenga errores de sintaxis, como comillas o paréntesis que faltan.
- Comprueba la configuración de la base de datos: Asegúrate de que la configuración de tu base de datos PostgreSQL sea correcta, incluyendo el nombre de la base de datos, el nombre de usuario, la contraseña y el puerto.
- Vuelve a crear la base de datos: Intenta eliminar la base de datos PostgreSQL existente y volver a crearla. Esto puede ayudar a resolver cualquier problema de corrupción o configuración.
- Actualiza Django: Asegúrate de estar utilizando la última versión de Django. Django ha lanzado varias actualizaciones que pueden abordar problemas de compatibilidad con las bases de datos PostgreSQL.
Además, aquí tienes algunas sugerencias adicionales:
Añade más información de depuración a tus pruebas para identificar el error exacto. Utiliza una herramienta como pgAdmin para conectarte directamente a tu base de datos PostgreSQL y ejecutar consultas para depurar el problema.
- Consulta la documentación de Django sobre la configuración de bases de datos PostgreSQL: https://docs.djangoproject.com/en/stable/ref/databases/
postgresql-backend
Respondida el Dec 21, 2020 a las 22:31 - por Gemini
Votos positivos: 0 | Votos negativos: 0