[Django] #29199: Oracle backend won't connect if password contains '@'

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[Django] #29199: Oracle backend won't connect if password contains '@'

Django
#29199: Oracle backend won't connect if password contains '@'
-------------------------------------+-------------------------------------
               Reporter:  Shane      |          Owner:  nobody
  Allgeier                           |
                   Type:             |         Status:  new
  Uncategorized                      |
              Component:  Database   |        Version:  2.0
  layer (models, ORM)                |
               Severity:  Normal     |       Keywords:  oracle
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 Using this DATABASES config in settings.py:
 {{{
 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.oracle',
         'NAME': 'mydsn',
         'USER': 'valid_username',
         'PASSWORD': 'p@ssword',
         'HOST': '',
         'PORT': '',
     }
 }
 }}}

 I get this traceback:
 {{{
 Unhandled exception in thread started by <function
 check_errors.<locals>.wrapper at 0x7fab58f99ae8>
 Traceback (most recent call last):
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 216, in ensure_connection
     self.connect()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 194, in connect
     self.connection = self.get_new_connection(conn_params)
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/oracle/base.py", line 208, in
 get_new_connection
     return Database.connect(self._connect_string(), **conn_params)
 cx_Oracle.DatabaseError: ORA-12154: TNS:could not resolve the connect
 identifier specified

 The above exception was the direct cause of the following exception:

 Traceback (most recent call last):
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/utils/autoreload.py", line 225, in wrapper
     fn(*args, **kwargs)
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/core/management/commands/runserver.py", line 123, in
 inner_run
     self.check_migrations()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/core/management/base.py", line 427, in check_migrations
     executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/executor.py", line 18, in __init__
     self.loader = MigrationLoader(self.connection)
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/loader.py", line 49, in __init__
     self.build_graph()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/loader.py", line 206, in build_graph
     self.applied_migrations = recorder.applied_migrations()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/recorder.py", line 61, in applied_migrations
     if self.has_table():
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/recorder.py", line 44, in has_table
     return self.Migration._meta.db_table in
 self.connection.introspection.table_names(self.connection.cursor())
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 255, in cursor
     return self._cursor()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 232, in _cursor
     self.ensure_connection()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 216, in ensure_connection
     self.connect()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/utils.py", line 89, in __exit__
     raise dj_exc_value.with_traceback(traceback) from exc_value
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 216, in ensure_connection
     self.connect()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 194, in connect
     self.connection = self.get_new_connection(conn_params)
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/oracle/base.py", line 208, in
 get_new_connection
     return Database.connect(self._connect_string(), **conn_params)
 django.db.utils.DatabaseError: ORA-12154: TNS:could not resolve the
 connect identifier specified
 }}}

 After delving into the Oracle backend, I realized that Django is calling
 the cx_Oracle.connect() function like so:
 (django/db/backends/oracle/base.py line 208)
 {{{
 Database.connect('valid_username/p@ssword@mydsn')
 }}}
 You can probably guess why cx_Oracle doesn't like this. As far as I can
 tell, there's no possible way to work around this bug without directly
 editing Django's (or cx_Oracle's) code.
 The following connection method works just fine:
 {{{
 Database.connect('valid_username', 'p@ssword', 'mydsn')
 }}}

 I should also mention that there have been
 [https://stackoverflow.com/q/25767485 others] that have this issue. In my
 case, the bureaucracy at my company won't allow me to choose my own
 password, so fixing Django is my only option.

--
Ticket URL: <https://code.djangoproject.com/ticket/29199>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/056.dda372c1575db12c375823eedb6ef5f3%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #29199: Oracle backend won't connect if password contains '@'

Django
#29199: Oracle backend won't connect if password contains '@'
-------------------------------------+-------------------------------------
     Reporter:  Shane Allgeier       |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Database layer       |                  Version:  2.0
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:  oracle               |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Shane Allgeier):

 * type:  Uncategorized => Bug


Old description:

> Using this DATABASES config in settings.py:
> {{{
> DATABASES = {
>     'default': {
>         'ENGINE': 'django.db.backends.oracle',
>         'NAME': 'mydsn',
>         'USER': 'valid_username',
>         'PASSWORD': 'p@ssword',
>         'HOST': '',
>         'PORT': '',
>     }
> }
> }}}
>
> I get this traceback:
> {{{
> Unhandled exception in thread started by <function
> check_errors.<locals>.wrapper at 0x7fab58f99ae8>
> Traceback (most recent call last):
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/backends/base/base.py", line 216, in ensure_connection
>     self.connect()
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/backends/base/base.py", line 194, in connect
>     self.connection = self.get_new_connection(conn_params)
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/backends/oracle/base.py", line 208, in
> get_new_connection
>     return Database.connect(self._connect_string(), **conn_params)
> cx_Oracle.DatabaseError: ORA-12154: TNS:could not resolve the connect
> identifier specified
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/utils/autoreload.py", line 225, in wrapper
>     fn(*args, **kwargs)
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/core/management/commands/runserver.py", line 123, in
> inner_run
>     self.check_migrations()
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/core/management/base.py", line 427, in check_migrations
>     executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/migrations/executor.py", line 18, in __init__
>     self.loader = MigrationLoader(self.connection)
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/migrations/loader.py", line 49, in __init__
>     self.build_graph()
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/migrations/loader.py", line 206, in build_graph
>     self.applied_migrations = recorder.applied_migrations()
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/migrations/recorder.py", line 61, in
> applied_migrations
>     if self.has_table():
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/migrations/recorder.py", line 44, in has_table
>     return self.Migration._meta.db_table in
> self.connection.introspection.table_names(self.connection.cursor())
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/backends/base/base.py", line 255, in cursor
>     return self._cursor()
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/backends/base/base.py", line 232, in _cursor
>     self.ensure_connection()
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/backends/base/base.py", line 216, in ensure_connection
>     self.connect()
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/utils.py", line 89, in __exit__
>     raise dj_exc_value.with_traceback(traceback) from exc_value
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/backends/base/base.py", line 216, in ensure_connection
>     self.connect()
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/backends/base/base.py", line 194, in connect
>     self.connection = self.get_new_connection(conn_params)
>   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
> packages/django/db/backends/oracle/base.py", line 208, in
> get_new_connection
>     return Database.connect(self._connect_string(), **conn_params)
> django.db.utils.DatabaseError: ORA-12154: TNS:could not resolve the
> connect identifier specified
> }}}
>
> After delving into the Oracle backend, I realized that Django is calling
> the cx_Oracle.connect() function like so:
> (django/db/backends/oracle/base.py line 208)
> {{{
> Database.connect('valid_username/p@ssword@mydsn')
> }}}
> You can probably guess why cx_Oracle doesn't like this. As far as I can
> tell, there's no possible way to work around this bug without directly
> editing Django's (or cx_Oracle's) code.
> The following connection method works just fine:
> {{{
> Database.connect('valid_username', 'p@ssword', 'mydsn')
> }}}
>
> I should also mention that there have been
> [https://stackoverflow.com/q/25767485 others] that have this issue. In my
> case, the bureaucracy at my company won't allow me to choose my own
> password, so fixing Django is my only option.
New description:

 The Oracle backend won't connect if password contains '@'.

 For example, using this DATABASES config in settings.py:
 {{{
 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.oracle',
         'NAME': 'mydsn',
         'USER': 'valid_username',
         'PASSWORD': 'p@ssword',
         'HOST': '',
         'PORT': '',
     }
 }
 }}}

 I get this traceback:
 {{{
 Unhandled exception in thread started by <function
 check_errors.<locals>.wrapper at 0x7fab58f99ae8>
 Traceback (most recent call last):
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 216, in ensure_connection
     self.connect()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 194, in connect
     self.connection = self.get_new_connection(conn_params)
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/oracle/base.py", line 208, in
 get_new_connection
     return Database.connect(self._connect_string(), **conn_params)
 cx_Oracle.DatabaseError: ORA-12154: TNS:could not resolve the connect
 identifier specified

 The above exception was the direct cause of the following exception:

 Traceback (most recent call last):
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/utils/autoreload.py", line 225, in wrapper
     fn(*args, **kwargs)
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/core/management/commands/runserver.py", line 123, in
 inner_run
     self.check_migrations()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/core/management/base.py", line 427, in check_migrations
     executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/executor.py", line 18, in __init__
     self.loader = MigrationLoader(self.connection)
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/loader.py", line 49, in __init__
     self.build_graph()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/loader.py", line 206, in build_graph
     self.applied_migrations = recorder.applied_migrations()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/recorder.py", line 61, in applied_migrations
     if self.has_table():
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/migrations/recorder.py", line 44, in has_table
     return self.Migration._meta.db_table in
 self.connection.introspection.table_names(self.connection.cursor())
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 255, in cursor
     return self._cursor()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 232, in _cursor
     self.ensure_connection()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 216, in ensure_connection
     self.connect()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/utils.py", line 89, in __exit__
     raise dj_exc_value.with_traceback(traceback) from exc_value
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 216, in ensure_connection
     self.connect()
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/base/base.py", line 194, in connect
     self.connection = self.get_new_connection(conn_params)
   File "/home/shane/.virtualenvs/django-rms/lib/python3.6/site-
 packages/django/db/backends/oracle/base.py", line 208, in
 get_new_connection
     return Database.connect(self._connect_string(), **conn_params)
 django.db.utils.DatabaseError: ORA-12154: TNS:could not resolve the
 connect identifier specified
 }}}

 After delving into the Oracle backend, I realized that Django is calling
 the cx_Oracle.connect() function like so:
 (django/db/backends/oracle/base.py line 208)
 {{{
 Database.connect('valid_username/p@ssword@mydsn')
 }}}
 You can probably guess why cx_Oracle doesn't like this. As far as I can
 tell, there's no possible way to work around this bug without directly
 editing Django's (or cx_Oracle's) code.
 The following connection method works just fine:
 {{{
 Database.connect('valid_username', 'p@ssword', 'mydsn')
 }}}

 I should also mention that there have been
 [https://stackoverflow.com/q/25767485 others] that have this issue. In my
 case, the bureaucracy at my company won't allow me to choose my own
 password, so fixing Django is my only option.

--

--
Ticket URL: <https://code.djangoproject.com/ticket/29199#comment:1>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/071.31fed16ee628637e3980a3bf352b0f27%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #29199: Oracle backend won't connect if password contains '@'

Django
In reply to this post by Django
#29199: Oracle backend won't connect if password contains '@'
-------------------------------------+-------------------------------------
     Reporter:  Shane Allgeier       |                    Owner:  felixxm
         Type:  Bug                  |                   Status:  assigned
    Component:  Database layer       |                  Version:  master
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:  oracle               |             Triage Stage:  Accepted
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by felixxm):

 * status:  new => assigned
 * owner:  nobody => felixxm
 * version:  2.0 => master
 * stage:  Unreviewed => Accepted


--
Ticket URL: <https://code.djangoproject.com/ticket/29199#comment:2>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/071.5e91f4fdbb5bdb863b42205d3d86fbdb%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #29199: Oracle backend won't connect if password contains '@'

Django
In reply to this post by Django
#29199: Oracle backend won't connect if password contains '@'
-------------------------------------+-------------------------------------
     Reporter:  Shane Allgeier       |                    Owner:  felixxm
         Type:  Bug                  |                   Status:  assigned
    Component:  Database layer       |                  Version:  master
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:  oracle               |             Triage Stage:  Accepted
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by felixxm):

 * has_patch:  0 => 1


Comment:

 [https://github.com/django/django/pull/9768 PR]

--
Ticket URL: <https://code.djangoproject.com/ticket/29199#comment:3>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/071.b11ad67addde2d51602a367bdf55a1ba%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #29199: Oracle backend won't connect if password contains '@'

Django
In reply to this post by Django
#29199: Oracle backend won't connect if password contains '@'
-------------------------------------+-------------------------------------
     Reporter:  Shane Allgeier       |                    Owner:  felixxm
         Type:  Bug                  |                   Status:  assigned
    Component:  Database layer       |                  Version:  master
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:  oracle               |             Triage Stage:  Accepted
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by Shane Allgeier):

 Patch looks good to me. Any chance we can get this backported to the older
 versions? At least Django 1.11 since that's the last version that supports
 Oracle 11.2.

 Thanks for the patch, felixxm!

--
Ticket URL: <https://code.djangoproject.com/ticket/29199#comment:4>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/071.ee8587b798255f507468e6e63c2c337f%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #29199: Oracle backend won't connect if password contains '@'

Django
In reply to this post by Django
#29199: Oracle backend won't connect if password contains '@'
-------------------------------------+-------------------------------------
     Reporter:  Shane Allgeier       |                    Owner:  felixxm
         Type:  Bug                  |                   Status:  assigned
    Component:  Database layer       |                  Version:  master
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:  oracle               |             Triage Stage:  Ready for
                                     |  checkin
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):

 * stage:  Accepted => Ready for checkin


Comment:

 This doesn't qualify for a backport based on our
 [https://docs.djangoproject.com/en/dev/internals/release-process
 /#supported-versions supported versions policy].

--
Ticket URL: <https://code.djangoproject.com/ticket/29199#comment:5>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/071.fa4b2eaead25f045033c2d467df6bf77%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #29199: Oracle backend won't connect if password contains '@'

Django
In reply to this post by Django
#29199: Oracle backend won't connect if password contains '@'
-------------------------------------+-------------------------------------
     Reporter:  Shane Allgeier       |                    Owner:  felixxm
         Type:  Bug                  |                   Status:  closed
    Component:  Database layer       |                  Version:  master
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:  fixed
     Keywords:  oracle               |             Triage Stage:  Ready for
                                     |  checkin
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by GitHub <noreply@…>):

 * status:  assigned => closed
 * resolution:   => fixed


Comment:

 In [changeset:"acfc650f2a6e4a79e80237eabfa923ea3a05d709" acfc650f]:
 {{{
 #!CommitTicketReference repository=""
 revision="acfc650f2a6e4a79e80237eabfa923ea3a05d709"
 Fixed #29199 -- Fixed crash when database user password contains @ sign on
 Oracle.

 Thanks Shane Allgeier for the report and Tim Graham for the review.
 }}}

--
Ticket URL: <https://code.djangoproject.com/ticket/29199#comment:6>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/071.7c0cb9e602fca0a669a2efa86655e0a8%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.