1

我正在尝试使用 django-evolution 来修改现有项目中的一些模型。现在,当我去同步数据库时,它说我需要进行“进化”。

当我尝试运行时:

python manage.py evolve --hint --execute

我在终端中看到了这个错误,但我还是新手,所以我无法解决这个错误。

错误代码:

Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/home/steve/lib/python2.6/site-packages/django/core/management/__init__.py", line 361, in execute_manager
utility.execute()
File "/home/steve/lib/python2.6/site-packages/django/core/management/__init__.py", line 306, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/steve/lib/python2.6/site-packages/django/core/management/base.py", line 192, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/steve/lib/python2.6/site-packages/django/core/management/base.py", line 219, in execute
output = self.handle(*args, **options)
File "/var/sites/placeholder/placeholder/placeholder/apps/django_evolution/management/commands/evolve.py", line 87, in handle
hinted_evolution = diff.evolution()
File "/var/sites/placeholder/placeholder/placeholder/apps/django_evolution/diff.py", line 197, in evolution
changed_attrs[prop] = current_field_sig.get(prop, ATTRIBUTE_DEFAULTS[prop])
KeyError: 'field_type'

谢谢,希望有人可以帮助我。

史蒂夫

4

2 回答 2

2

我已经解决了,我会为遇到同样问题的任何人发帖。

我意识到我正处于项目的一个非常稳定的部分。所以我备份了我的数据库并继续删除了 django_evolution 使用的 2 个表。

然后我运行了一个同步数据库来再次创建表。

这似乎奏效了,我能够进行我的进化。

于 2011-07-18T19:16:07.500 回答
2

我将详细说明史蒂夫的回答。

要查看 django_evolution 在项目数据库中创建的两个表,请使用以下命令:

python manage.py sql django_evolution

上面的命令并不是真正需要的。您可以直接去移除表格或重置表格。请注意,要使上述命令正常工作,您需要在 INSTALLED_APPS 中使用名为“django_evolution”的应用程序。我将提供一个在 Django1.2.7 上对我有用的命令。是的,我还在使用 1.2.7 版本,因为到目前为止我还没有升级的理由。我的答案末尾提供了解决此问题的各种方法。您使用以下命令进行重置:

python manage.py reset django_evolution

通过键入“是”接受重置查询。

现在执行数据库同步:

python manage.py syncdb

这个命令会告诉你你需要进化。键入以下命令以进行进化:

python manage.py evolve --hint

如果您对上述命令提供的提示没问题,请继续执行进化:

python manage.py evolve --hint --execute

输入“是”确认执行。

您所有的旧表和相关数据都将无缝运行。检查类型:

python manage.py runserver

如何从 DJango 的 SQLite3 中删除表?

于 2013-05-09T08:25:01.640 回答