【问题标题】:Unable to migrate in django无法在 django 中迁移
【发布时间】:2021-10-25 19:47:16
【问题描述】:

model.py

class Staff(models.Model):
   organization = models.ForeignKey(
        Organization, related_name='staff_organization', on_delete=models.CASCADE, blank=True)
    user = models.OneToOneField(
        User, on_delete=models.CASCADE, blank=True)
    phone = models.CharField(max_length=15, blank=True)
    address = models.CharField(max_length=200, blank=True)

我正在尝试在数据库表中添加新字段。 II 只是添加了地址字段。我收到以下错误:

上述异常是以下异常的直接原因:

Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line    
    utility.execute()
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\core\management\base.py", line 328, in run_from_argv
    self.execute(*args, **cmd_options)
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\db\backends\base\schema.py", line 142, in execute
    cursor.execute(sql, params)
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\db\backends\utils.py", line 100, in execute
    return super().execute(sql, params)
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\db\backends\utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\db\backends\utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "D:\Project\AIT Project\project\venv\lib\site-packages\django\db\backends\utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "auth_user_email_1c89df09_uniq" already exists

【问题讨论】:

  • 这个项目是用来学习的吗?

标签: python python-3.x django django-models django-migrations


【解决方案1】:

尝试运行

python manage.py migrate <yourappname> zero

然后进入迁移文件夹并删除除 pycache 和 initpy 之外的所有文件 然后又是

python manage.py makemigrations
python manage.py migrate

这必须解决你的问题

【讨论】:

    【解决方案2】:

    一种选择是从任何数据库管理系统中的 db 中删除 auth_user_email_1c89df09_uniq 约束。我用 pgadmin 2 做到了。

    【讨论】: