#29777: ORA-00933: SQL command not properly ended with pagination in a
ModelViewSet
-------------------------------------+-------------------------------------
Reporter: zorky | Owner: nobody
Type: Bug | Status: new
Component: Database | Version: 2.1
layer (models, ORM) | Keywords:
Severity: Normal | orm,oracle,pagination
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
After an upgrade from Django 2.0.6 to Django 2.1.1 and DRF 3.8.2, I got an
error with a ModelViewSet with '''pagination''', it worked with previous
version.
When I get rid off pagination, there is no problems.
The stack error, notice the end :
{{{
api-dev | The above exception was the direct cause of the
following exception:
api-dev |
api-dev | Traceback (most recent call last):
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/core/handlers/exception.py", line 34, in inner
api-dev | response = get_response(request)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/core/handlers/base.py", line 126, in _get_response
api-dev | response = self.process_exception_by_middleware(e,
request)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/core/handlers/base.py", line 124, in _get_response
api-dev | response = wrapped_callback(request, *callback_args,
**callback_kwargs)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/views/decorators/csrf.py", line 54, in wrapped_view
api-dev | return view_func(*args, **kwargs)
api-dev | File "/usr/local/lib/python3.6/site-
packages/rest_framework/viewsets.py", line 103, in view
api-dev | return self.dispatch(request, *args, **kwargs)
api-dev | File "/usr/local/lib/python3.6/site-
packages/rest_framework/views.py", line 483, in dispatch
api-dev | response = self.handle_exception(exc)
api-dev | File "/usr/local/lib/python3.6/site-
packages/rest_framework/views.py", line 443, in handle_exception
api-dev | self.raise_uncaught_exception(exc)
api-dev | File "/usr/local/lib/python3.6/site-
packages/rest_framework/views.py", line 480, in dispatch
api-dev | response = handler(request, *args, **kwargs)
api-dev | File "/usr/local/lib/python3.6/site-
packages/rest_framework/mixins.py", line 42, in list
api-dev | page = self.paginate_queryset(queryset)
api-dev | File "/usr/local/lib/python3.6/site-
packages/rest_framework/generics.py", line 173, in paginate_queryset
api-dev | return self.paginator.paginate_queryset(queryset,
self.request, view=self)
api-dev | File "/usr/local/lib/python3.6/site-
packages/rest_framework/pagination.py", line 337, in paginate_queryset
api-dev | return list(queryset[self.offset:self.offset +
self.limit])
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/models/query.py", line 268, in __iter__
api-dev | self._fetch_all()
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/models/query.py", line 1186, in _fetch_all
api-dev | self._result_cache =
list(self._iterable_class(self))
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/models/query.py", line 54, in __iter__
api-dev | results =
compiler.execute_sql(chunked_fetch=self.chunked_fetch,
chunk_size=self.chunk_size)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/models/sql/compiler.py", line 1065, in execute_sql
api-dev | cursor.execute(sql, params)
api-dev | File "/usr/local/lib/python3.6/site-
packages/debug_toolbar/panels/sql/tracking.py", line 176, in execute
api-dev | return self._record(self.cursor.execute, sql,
params)
api-dev | File "/usr/local/lib/python3.6/site-
packages/debug_toolbar/panels/sql/tracking.py", line 117, in _record
api-dev | return method(sql, params)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/backends/utils.py", line 100, in execute
api-dev | return super().execute(sql, params)
api-dev | File "/usr/local/lib/python3.6/site-
packages/raven/contrib/django/client.py", line 127, in execute
api-dev | return real_execute(self, sql, params)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/backends/utils.py", line 68, in execute
api-dev | return self._execute_with_wrappers(sql, params,
many=False, executor=self._execute)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
api-dev | return executor(sql, params, many, context)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/backends/utils.py", line 85, in _execute
api-dev | return self.cursor.execute(sql, params)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/utils.py", line 89, in __exit__
api-dev | raise dj_exc_value.with_traceback(traceback) from
exc_value
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/backends/utils.py", line 85, in _execute
api-dev | return self.cursor.execute(sql, params)
api-dev | File "/usr/local/lib/python3.6/site-
packages/django/db/backends/oracle/base.py", line 513, in execute
api-dev | return self.cursor.execute(query,
self._param_generator(params))
api-dev | django.db.utils.DatabaseError: ORA-00933: SQL command
not properly ended
}}}
Example of my ModelViewSet and Model
{{{
#!div style="font-size: 80%"
Code highlighting:
{{{#!python
class MelLoginViewSet(viewsets.ModelViewSet):
queryset = MelLoginAnglais.objects.all()
serializer_class = MelLoginAnglaisSimpleSerializer
filter_backends = (django_filters.rest_framework.DjangoFilterBackend,
OrderingFilter, SearchFilter,)
pagination_class = LimitOffsetPagination
page_size = 10
class MelLoginAnglais(models.Model):
cod_ind = models.IntegerField(primary_key=True)
nom_login = models.CharField(max_length=100)
def __str__(self):
return "MelLogin : {cod} {login}".format(
cod=self.cod_ind,
login=self.nom_login
)
class Meta:
db_table = '"APOGEE"."MEL_LOGIN"'
managed = False
}}}
}}}
with python 3.6, Oracle 11.0.2.4
cx-Oracle 5.2.1 or 7.0
--
Ticket URL: <https://code.djangoproject.com/ticket/29777>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/048.5e361f84dc0b44817336a021bcbe105d%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.