【问题标题】:I have deleted a table from models but django still looking for it我已经从模型中删除了一个表,但 django 仍在寻找它
【发布时间】:2021-09-05 22:10:44
【问题描述】:

我通过评论模型从我的数据库中删除了模型名称 controlapproval 和 运行 python manage.py makemigrations 但是当我尝试使用 python manage.py migrate 进行迁移时 它会抛出如下错误

Traceback (most recent call last):
  File "manage.py", line 23, in <module>
    main()
  File "manage.py", line 19, in main
    execute_from_command_line(sys.argv)
  File "E:\FBR\FBRENV\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "E:\FBR\FBRENV\lib\site-packages\django\core\management\__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "E:\FBR\FBRENV\lib\site-packages\django\core\management\base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "E:\FBR\FBRENV\lib\site-packages\django\core\management\base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "E:\FBR\FBRENV\lib\site-packages\django\core\management\base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "E:\FBR\FBRENV\lib\site-packages\django\core\management\commands\migrate.py", line 234, in handle
    fake_initial=fake_initial,
  File "E:\FBR\FBRENV\lib\site-packages\django\db\migrations\executor.py", line 117, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\migrations\executor.py", line 147, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\migrations\executor.py", line 245, in apply_migration
    state = migration.apply(state, schema_editor)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\migrations\migration.py", line 124, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\migrations\operations\models.py", line 261, in database_forwards
    schema_editor.delete_model(model)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\backends\sqlite3\schema.py", line 308, in delete_model
    super().delete_model(model)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\backends\base\schema.py", line 326, in delete_model
    "table": self.quote_name(model._meta.db_table),
  File "E:\FBR\FBRENV\lib\site-packages\django\db\backends\base\schema.py", line 137, in execute
    cursor.execute(sql, params)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\backends\utils.py", line 99, in execute
    return super().execute(sql, params)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\backends\utils.py", line 67, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "E:\FBR\FBRENV\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "E:\FBR\FBRENV\lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: assessment_controlapproval

任何帮助或指导都会有很大帮助

【问题讨论】:

  • 您是否有任何机会手动从数据库中删除了表?

标签: python-3.x django


【解决方案1】:
  1. 从项目根目录中删除 migrations 文件夹。
  2. 创建一个新的migrations 文件夹。
  3. 在该文件夹中添加一个__init__.py 空文件。
  4. 运行python manage.py makemigrationspython manage.py migrate

这只会为您的项目创建一个新的迁移。

【讨论】:

  • 该项目是一个实时应用程序,所以我无法完全删除迁移
  • 它只会删除迁移。您的数据库数据不会受到影响。
  • 我知道,但是当我将它上传到服务器时,他们将不得不删除那里的迁移,这将影响其他团队成员从事同一项目的工作
  • @HussainPettiwala 这个答案几乎是你的previous 一个字的原因吗?请不要采取此类行动,如果您认为它也回答了这个问题,请将问题标记为重复问题,而不是重新发布。
  • 问题完全不同,但解决方案是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
相关资源
最近更新 更多