Re: Django 1.11 and Python 3 SQLite Migration "table already exists"

2018-04-03 Thread Alex Laird
Finally found the solution. I have marked it as the answer on my 
Stackoverflow question here: https://stackoverflow.com/a/49641729/1128413

On Tuesday, April 3, 2018 at 2:52:55 PM UTC-7, Alex Laird wrote:
>
> I've recently started receiving an error that I'm having trouble 
> identifying with a Django 1.11 project using SQLite in development. The 
> project linked below was/is previously Python 2/3 compatible, though I 
> primarily ran it using Python 2. Recently, I switched over most of my 
> computers and projects to default to using Python 3. Additionally, I 
> upgraded the project from Django 1.7 to 1.11. After this, the project 
> started receiving the table already exists error, but *only* when running 
> the migrate command using python3.
>
> I also *only* get the error when running python3 manage.py migrate. For 
> instance, python3 manage.py test works just fine, which is a bit baffling 
> given test first runs the migrations. Running python2 manage.py migrate works 
> just fine, no errors.
>
> I am running Python 3.6.4, installed via Homebrew on a Mac, and the error 
> I received is:
>
> File 
> "/usr/local/lib/python3.6/site-packages/django/db/migrations/recorder.py", 
> line 59, in ensure_schema
>raise MigrationSchemaMissing("Unable to create the django_migrations table 
> (%s)" % exc)
> django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the 
> django_migrations table (table "django_migrations" already exists)
>
> I run into this exact same issue—broken with Python 3 but working with 
> Python 2—on multiple computers, so I'd imagine anyone else will see the 
> same issue. You should be able to reproduce the issue with the following 
> steps:
>
>1. git clone 
>
> g...@github.com:alexdlaird/django-bootstrap-authentication-template-project.git
>  
>&& cd django-bootstrap-authentication-template-project
>2. make install
>3. python2 manage.py migrate - note that it works just fine
>4. rm db.sqlite for a fresh start
>5. python3 manage.py migrate - note that it fails with the error shown 
>above 5x. rm db.sqlitefor a fresh start 5x. python3 manage.py test - 
>note that it works just fine
>
> To see the migrations run against a MySQL instance (the project assumes 
> you have a default Homebrew MySQL instance running locally, but this can be 
> configured in .env if not), run python3 manage.py migrate and observe 
> that this works just fine with Python 2 or 3, so the issue appears isolated 
> to SQLite migrations.
>
> I have done a bit of debugging with this issue myself, swapping back and 
> forth between Python 2.7 and Python 3.6. What I'm seeing is that I believe 
> the issue is related to Unicode strings and table names in Python 3, but 
> I'm not sure where the best place to address this would be. For example, 
> watching the returned get_tables_list in value of in 
> python3.6/django/db/backends/sqlite3/introspection.py shows an empty list 
> (I believe because of the b'' preceding the string, which is hijacking what 
> otherwise should be an array index), whereas in the same file and function 
> in python2.7 all the existing tables are properly return.
>
> Am I doing something wrong? Is this a valid bug? I have also written about 
> it on Stackoverflow here: 
> https://stackoverflow.com/questions/49503235/table-django-migrations-already-exists-error-with-python-3-and-sqlite3/49505445?noredirect=1#comment86058087_49505445
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/65106a91-089d-47cd-9456-0b43f1ff2263%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Django 1.11 and Python 3 SQLite Migration "table already exists"

2018-04-03 Thread Alex Laird
I've recently started receiving an error that I'm having trouble 
identifying with a Django 1.11 project using SQLite in development. The 
project linked below was/is previously Python 2/3 compatible, though I 
primarily ran it using Python 2. Recently, I switched over most of my 
computers and projects to default to using Python 3. Additionally, I 
upgraded the project from Django 1.7 to 1.11. After this, the project 
started receiving the table already exists error, but *only* when running 
the migrate command using python3.

I also *only* get the error when running python3 manage.py migrate. For 
instance, python3 manage.py test works just fine, which is a bit baffling 
given test first runs the migrations. Running python2 manage.py migrate works 
just fine, no errors.

I am running Python 3.6.4, installed via Homebrew on a Mac, and the error I 
received is:

File "/usr/local/lib/python3.6/site-packages/django/db/migrations/recorder.py", 
line 59, in ensure_schema
   raise MigrationSchemaMissing("Unable to create the django_migrations table 
(%s)" % exc)
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the 
django_migrations table (table "django_migrations" already exists)

I run into this exact same issue—broken with Python 3 but working with 
Python 2—on multiple computers, so I'd imagine anyone else will see the 
same issue. You should be able to reproduce the issue with the following 
steps:

   1. git clone 
   
g...@github.com:alexdlaird/django-bootstrap-authentication-template-project.git 
   && cd django-bootstrap-authentication-template-project
   2. make install
   3. python2 manage.py migrate - note that it works just fine
   4. rm db.sqlite for a fresh start
   5. python3 manage.py migrate - note that it fails with the error shown 
   above 5x. rm db.sqlitefor a fresh start 5x. python3 manage.py test - 
   note that it works just fine

To see the migrations run against a MySQL instance (the project assumes you 
have a default Homebrew MySQL instance running locally, but this can be 
configured in .env if not), run python3 manage.py migrate and observe that 
this works just fine with Python 2 or 3, so the issue appears isolated to 
SQLite migrations.

I have done a bit of debugging with this issue myself, swapping back and 
forth between Python 2.7 and Python 3.6. What I'm seeing is that I believe 
the issue is related to Unicode strings and table names in Python 3, but 
I'm not sure where the best place to address this would be. For example, 
watching the returned get_tables_list in value of in 
python3.6/django/db/backends/sqlite3/introspection.py shows an empty list 
(I believe because of the b'' preceding the string, which is hijacking what 
otherwise should be an array index), whereas in the same file and function 
in python2.7 all the existing tables are properly return.

Am I doing something wrong? Is this a valid bug? I have also written about 
it on Stackoverflow here: 
https://stackoverflow.com/questions/49503235/table-django-migrations-already-exists-error-with-python-3-and-sqlite3/49505445?noredirect=1#comment86058087_49505445

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/cc149c2b-2fb4-46e5-82de-47932a858327%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.