Opened 19 months ago

Closed 9 months ago

#20879 closed Bug (fixed)

BinaryField doesn't work with Oracle on Python3

Reported by: slafs Owned by: nobody
Component: Database layer (models, ORM) Version: 1.6-beta-1
Severity: Normal Keywords: BinaryField Oracle Python3
Cc: shai@… Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I made a repo as a showcase of this bug https://bitbucket.org/slafs/test-django-binaryfield-oracle-py3

The test case in this repo is taken from Django testsuite.

The exception i'm getting is this:

django.utils.encoding.DjangoUnicodeDecodeError: 'utf-8' codec can't decode byte 0xfe in position 2: invalid start byte. You passed in b'\x00F\xfe' (<class 'bytes'>)

The problem is with handling Oracle params in django.db.backends.oracle.base.OracleParam class. I think I may have a solution on this.

Change History (3)

comment:1 Changed 19 months ago by shai

  • Cc shai@… added
  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

Hi, and thanks for your report.

I am looking forward to seeing what you come up with. Please also specify exactly which Python3 and Oracle versions you are working with -- there are known Unicode problems related to bugs in certain versions of Oracle (#20292).

Also, you should be aware that Oracle under Python3 is generally broken (#20725), so the problem may lie deeper than you think.

comment:2 Changed 19 months ago by timo

  • Triage Stage changed from Unreviewed to Accepted
  • Type changed from Uncategorized to Bug

comment:3 Changed 9 months ago by shai

  • Resolution set to fixed
  • Status changed from new to closed

Some related fixes were introduced in #22715. The Django test-suite passes on 1.7 and master with python3 and cx_Oracle 5.1.3; so I suspect this has been solved.

If this is not the case, please reopen.

Note: See TracTickets for help on using tickets.
Back to Top