2014-10-05 70 views
6

甚至這個簡單示例引發一個ValueError: Dependency on app with no migrations: myApp期間python manage.py syncdb定製用戶在Django引發ValueError異常

對myApp/models.py

from django.contrib.auth.models import AbstractUser 

class User(AbstractUser): 
    pass 

settings.py

AUTH_USER_MODEL = 'myApp.User' 

個運行在Django == ./manage syncdb 1.6.5 < <工作

Creating tables ... 

在Django ==運行./manage syncdb 1.7 < <休息

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line 
    utility.execute() 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute 
    output = self.handle(*args, **options) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/base.py", line 533, in handle 
    return self.handle_noargs(**options) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 27, in handle_noargs 
    call_command("migrate", **options) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 115, in call_command 
    return klass.execute(*args, **defaults) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute 
    output = self.handle(*args, **options) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 63, in handle 
    executor = MigrationExecutor(connection, self.migration_progress_callback) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/db/migrations/executor.py", line 17, in __init__ 
    self.loader = MigrationLoader(self.connection) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/db/migrations/loader.py", line 48, in __init__ 
    self.build_graph() 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/db/migrations/loader.py", line 239, in build_graph 
    parent = self.check_key(parent, key[0]) 
    File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/db/migrations/loader.py", line 163, in check_key 
    raise ValueError("Dependency on app with no migrations: %s" % key[0]) 
ValueError: Dependency on app with no migrations: myApp 

我一直沒能找到任何在1.7的文檔中說這應該與1.6完全不同。它確實看起來像其他人已經有this problem too,但由於運行./manage.py migrate --list

有沒有人遇到過這個?

+0

如果你只是想創建一個新的數據庫,你不關心數據遷移,你也可以刪除'myApp/migration'目錄。在我的例子中,'migrate'只有在它之後纔開始工作。 – deathangel908 2015-03-13 19:37:59

回答

20

我想我是找錯了地方的答案:

我解決了這個運行:./manage.py makemigrations myApp

(env)Bens-MacBook-Pro:social_auth bdhammel$ ./manage.py makemigrations myApp 
Migrations for 'myApp': 
    0001_initial.py: 
    - Create model User 
(env)Bens-MacBook-Pro:social_auth bdhammel$ python manage.py syncdb 
Operations to perform: 
    Apply all migrations: sessions, admin, myApp, auth, default, contenttypes 
Running migrations: 
    Applying contenttypes.0001_initial... FAKED 
    Applying auth.0001_initial... FAKED 
    Applying app.0001_initial... FAKED 
    Applying admin.0001_initial... FAKED 
    Applying default.0001_initial... FAKED 
    Applying sessions.0001_initial... FAKED 

You have installed Django's auth system, and don't have any superusers defined. 
Would you like to create one now? (yes/no): yes 

通過https://docs.djangoproject.com/en/1.7/topics/migrations/#s-custom-fields

編輯
我應該用python manage.py migrate而不是python manage.py syncdb

https://docs.djangoproject.com/en/1.8/releases/1.7/#schema-migrations

執行syncdb已被棄用,並通過遷移所取代。別擔心 - 對syncdb的調用仍然可以像以前一樣工作。在每個應用程序

5
  1. 刪除遷移文件夾
  2. DROP TABLE django_migrations
  3. 運行python3 manage.py makemigrations app1
  4. 運行python3 manage.py makemigrations app2

manage.py runserver現在應該像一個魅力

0

當我將應用程序移入乾淨的新項目而不刪除遷移時,發生了這種情況。如果您不關心遷移並從頭開始項目,請考慮從這些應用程序中刪除遷移。