Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free.

I'm trying to set up the tables for a new django project (that is, the tables do NOT already exist in the database); the django version is 1.7 and the db backend is psotgresql. The name of the project is crud. Results of migration attempt follow:


python manage.py makemigrations crud

Migrations for 'crud':
  0001_initial.py:
    - Create model AddressPoint
    - Create model CrudPermission
    - Create model CrudUser
    - Create model LDAPGroup
    - Create model LogEntry
    - Add field ldap_groups to cruduser
    - Alter unique_together for crudpermission (1 constraint(s))

python manage.py migrate crud

Operations to perform:
  Apply all migrations: crud
Running migrations:
  Applying crud.0001_initial...Traceback (most recent call last):
  File "manage.py", line 18, in 
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 338, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 161, in handle
    executor.migrate(targets, plan, fake=options.get("fake", False))
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 68, in migrate
    self.apply_migration(migration, fake=fake)
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 102, in apply_migration
    migration.apply(project_state, schema_editor)
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/migration.py", line 108, in apply
    operation.database_forwards(self.app_label, schema_editor, project_state, new_state)
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/operations/models.py", line 36, in database_forwards
    schema_editor.create_model(model)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/schema.py", line 262, in create_model
    self.execute(sql, params)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/schema.py", line 103, in execute
    cursor.execute(sql, params)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 82, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 66, in execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 66, in execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "crud_crudpermission" already exists

Some highlights from the migration file:

    dependencies = [
        ('auth', '0001_initial'),
        ('contenttypes', '0001_initial'),
    ]
        migrations.CreateModel(
            name='CrudPermission',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('_created_by', models.CharField(default=b'', max_length=64, null=True, editable=False, blank=True)),
                ('_last_updated_by', models.CharField(default=b'', max_length=64, null=True, editable=False, blank=True)),
                ('_created', models.DateTimeField(null=True, editable=False, blank=True)),
                ('_last_updated', models.DateTimeField(null=True, editable=False, blank=True)),
                ('domain', models.CharField(max_length=32, choices=[(b'town', b'Town'), (b'boe', b'BOE'), (b'police', b'Police')])),
                ('ldap_group', models.CharField(max_length=128, verbose_name=b'LDAP group')),
                ('can_add', models.BooleanField(default=False, verbose_name=b'add')),
                ('can_change', models.BooleanField(default=False, verbose_name=b'change')),
                ('restrict_change_to_own', models.BooleanField(default=False)),
                ('can_delete', models.BooleanField(default=False, verbose_name=b'delete')),
                ('restrict_delete_to_own', models.BooleanField(default=False)),
                ('models', models.ManyToManyField(to='contenttypes.ContentType', null=True, blank=True)),
            ],
            options={
                'verbose_name': 'CRUD permission',
            },
            bases=(models.Model,),
        ),
        migrations.AlterUniqueTogether(
            name='crudpermission',
            unique_together=set([('ldap_group', 'can_add', 'can_change', 'can_delete', 'domain')]),
        ),

The crud app is not meant to actually do anything, but I use it another app, so when I try migrate from that app, I trigger the above problem.

I've found other examples on the web of people with similar issues, but none of their cases seem to apply, as 1) the problem affects an entire relation, not just one column, and 2) I am not using multiple inheritance.

Where should I look next to find the underlying problem?

share|improve this question
    
Have you run syncdb? If so, that has already created the table in the DB so this migration is trying to recreate. To skip it, run python manage.py migrate --fake –  Timmy O'Mahony Apr 23 at 20:48
3  
syncdb is nothing more than a migrate along with a prompt to create superuser if there isn't one. If he did run it, migrations will not try to reapply the migration. –  shangxiao Apr 24 at 16:12

1 Answer 1

Been facing a similar issue, eventually deleted all .py files in migration folder (django 1.7 creates one automatically), worked perfectly after that.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.