给定一个新创建的django项目,其中安装了以下应用程序:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'registration',
)
当我第一次运行./manage.py migrate时,我得到以下错误:
Operations to perform:
Synchronize unmigrated apps: staticfiles, messages, registration
Apply all migrations: sessions, admin, auth, contenttypes
Synchronizing apps without migrations:
Creating tables...
Creating table registration_registrationprofile
Running deferred SQL...
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute
output = self.handle(*args, **options)
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 179, in handle
created_models = self.sync_apps(connection, executor.loader.unmigrated_apps)
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 317, in sync_apps
cursor.execute(statement)
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/db/utils.py", line 97, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/Users/tcosta/Virtualenvs/django_project/lib/python2.7/site-packages/django/db/backends/utils.py", line 62, in execute
return self.cursor.execute(sql)
django.db.utils.ProgrammingError: relation "auth_user" does not exist```
Django似乎试图在用户表之前创建注册表。
如果我注解注册应用程序并运行migrate,然后取消注解注册应用程序并再次运行migrate,则不会发生这种错误。但是,这不是正确的做法,对吗?
8条答案
按热度按时间mitkmikd1#
在更新我的Django版本后,我得到了这个错误,并修复了这两行:
我想应该先运行auth模型中的auth_user表。
xzlaal3s2#
如果你按照Pedro瓦格纳的建议(auth_user error with Django 1.8 and syncdb / migrate)去做,这个问题就可以避免:
通过运行以下命令,确保所有应用程序都存在初始迁移文件:
我不仅会为那些依赖auth的人做这件事,因为我认为这个问题更普遍。
在我看来,这种行为的根本原因是
并不总是创建初始迁移,如果它们还没有在那里,* 相反 *:
不幸的是,我无法理解这种不对称的原因。
ukqbszuj3#
我想你只是忘了迁移你的auth模型。但是,要做到这一点,只需在您的终端上键入以下命令。
或者是
希望这解决了你在程序中的错误。
qyyhg6bp4#
我觉得你应该跑:
python manage.py syncdb
并且可能需要设置一些依赖项?在syncdb之后可能不需要。
南1风格(Django < 1.7)
南2风格(Django >= 1.7)
emeijp435#
为应用创建迁移后,它将自动添加必要的依赖项。所以在这个例子中,只运行
./manage.py makemigrations registration
。请检查registration/migrations/0001_initial.py文件,您应该会看到如下内容:
这意味着您需要为具有任何依赖关系的所有应用创建迁移。
zi8p0yeb6#
我也有这个问题,通过将旧的注册替换为包含pull #25的注册来解决它:
zqdjd7g97#
在我的例子中,这个问题已经解决了,在INSTALLED_APPS中重新添加了一些已经删除的模块。因此,数据库中的一些表混淆了迁移方案,然后破坏了
test
命令,因为默认数据库包含以前的迁移。修复了在我的例子中重新添加模块
allauth
和其他相关子模块的问题。bxjv4tth8#
您尚未迁移模型
python manage.py makemigrations my_app_name
对于Mac OS
python3 manage.py makemigrations my_app