Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 运行迁移可以在本地工作,但不能在Travis CI上运行_Django_Python 2.7_Migration_Travis Ci - Fatal编程技术网

Django 运行迁移可以在本地工作,但不能在Travis CI上运行

Django 运行迁移可以在本地工作,但不能在Travis CI上运行,django,python-2.7,migration,travis-ci,Django,Python 2.7,Migration,Travis Ci,我在Django 1.8中有一个项目,我开始使用Travis CI,但我有一个无法解决的问题 当我通过python manage.py test在本地执行测试时,它工作得很好,在运行迁移时没有问题。但是,当Travis执行相同的命令时,它可以很好地应用除一个迁移之外的所有迁移 错误跟踪如下所示: Traceback (most recent call last): File "EntHub/manage.py", line 10, in <module> execute_

我在Django 1.8中有一个项目,我开始使用Travis CI,但我有一个无法解决的问题

当我通过
python manage.py test
在本地执行测试时,它工作得很好,在运行迁移时没有问题。但是,当Travis执行相同的命令时,它可以很好地应用除一个迁移之外的所有迁移

错误跟踪如下所示:

Traceback (most recent call last):
  File "EntHub/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/commands/test.py", line 30, in run_from_argv
    super(Command, self).run_from_argv(argv)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/commands/test.py", line 74, in execute
    super(Command, self).execute(*args, **options)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute
    output = self.handle(*args, **options)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/commands/test.py", line 90, in handle
    failures = test_runner.run_tests(test_labels)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/test/runner.py", line 210, in run_tests
    old_config = self.setup_databases()
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/test/runner.py", line 166, in setup_databases
    **kwargs
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/test/runner.py", line 370, in setup_databases
    serialize=connection.settings_dict.get("TEST", {}).get("SERIALIZE", True),
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/db/backends/base/creation.py", line 368, in create_test_db
    test_flush=True,
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/__init__.py", line 120, in call_command
    return command.execute(*args, **defaults)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute
    output = self.handle(*args, **options)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 221, in handle
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/db/migrations/executor.py", line 110, in migrate
    self.apply_migration(states[migration], migration, fake=fake, fake_initial=fake_initial)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/db/migrations/executor.py", line 147, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/db/migrations/migration.py", line 115, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/db/migrations/operations/fields.py", line 201, in database_forwards
    schema_editor.alter_field(from_model, from_field, to_field)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 469, in alter_field
    return self._alter_many_to_many(model, old_field, new_field, strict)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 785, in _alter_many_to_many
    old_field.rel.through._meta.get_field(old_field.m2m_field_name()),
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/db/models/options.py", line 554, in get_field
    raise FieldDoesNotExist('%s has no field named %r' % (self.object_name, field_name))
django.core.exceptions.FieldDoesNotExist: Account_following has no field named None
0001_首字母.py(正常)

0002\u auto\u 20161116\u 1512.py(正常)

0003\u账户\u跟随.py(确定)

0004\u auto\u 20170119\u 1151.py(失败)

我进一步提供了我的文件
.travis.yml

language: python
python:
  - "2.7"
env:
  - DJANGO_VERSION=1.8
services:
  - postgresql
addons:
  postgresql: "9.3"
install:
  - pip install -q Django==$DJANGO_VERSION
  - pip install psycopg2
before_script:
  - psql -c "CREATE USER enthub WITH PASSWORD 'enthub';" -U postgres
  - psql -c "ALTER USER enthub CREATEDB;" -U postgres
script:
  - python EntHub/manage.py test --verbosity=2
enthub/enthub
settings.py
中数据库的凭据


提前感谢。

问题似乎是Django的问题,与多对多自实字段的更改字段迁移有关,但奇怪的是,它只出现在Travis上。最后,由于项目仍在开发中,我决定删除.py之后的迁移
0003\u account\u和
0004\u auto\u 20170119\u 1151.py
,然后再次运行命令
python manage.py makemigrations
。现在一切正常,但我不得不重置数据库

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models
from django.conf import settings


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Account',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('birth', models.DateField(blank=True)),
                ('text', models.TextField(blank=True)),
                ('avatar', models.URLField(blank=True)),
                ('user', models.OneToOneField(to=settings.AUTH_USER_MODEL)),
            ],
        ),
    ]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0001_initial'),
    ]

    operations = [
        migrations.AlterField(
            model_name='account',
            name='birth',
            field=models.DateField(null=True, blank=True),
        ),
    ]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0002_auto_20161116_1512'),
    ]

    operations = [
        migrations.AddField(
            model_name='account',
            name='following',
            field=models.ManyToManyField(related_name='_account_following_+', to='main.Account', blank=True),
        ),
    ]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0003_account_following'),
    ]

    operations = [
        migrations.AlterField(
            model_name='account',
            name='following',
            field=models.ManyToManyField(related_name='followers', to='main.Account', blank=True),
        ),
    ]
language: python
python:
  - "2.7"
env:
  - DJANGO_VERSION=1.8
services:
  - postgresql
addons:
  postgresql: "9.3"
install:
  - pip install -q Django==$DJANGO_VERSION
  - pip install psycopg2
before_script:
  - psql -c "CREATE USER enthub WITH PASSWORD 'enthub';" -U postgres
  - psql -c "ALTER USER enthub CREATEDB;" -U postgres
script:
  - python EntHub/manage.py test --verbosity=2