【发布时间】:2011-08-11 08:28:42
【问题描述】:
尝试在我的本地机器(win/sqlite)上使用 loaddata 时:
python django-admin.py loaddata dumpdata.json
我收到以下错误:
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE) ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
如果有帮助,我正在使用 djangoconfig 应用程序:
"""
Django-config settings loader.
"""
import os
CONFIG_IDENTIFIER = os.getenv("CONFIG_IDENTIFIER")
if CONFIG_IDENTIFIER is None:
CONFIG_IDENTIFIER = 'local'
# Import defaults
from config.base import *
# Import overrides
overrides = __import__(
"config." + CONFIG_IDENTIFIER,
globals(),
locals(),
["config"]
)
for attribute in dir(overrides):
if attribute.isupper():
globals()[attribute] = getattr(overrides, attribute)
projects>python manage.py loaddata dumpdata.json --settings=config.base
WARNING: Forced to run environment with LOCAL configuration.
Problem installing fixture 'dumpdata.json': Traceback
(most recent call last):
File "loaddata.py", line 174, in handle
obj.save(using=using)
...
File "C:\Python26\lib\site-packages\django\db\backends\sqlite3\base.py", line
234, in execute
return Database.Cursor.execute(self, query, params)
IntegrityError: columns app_label, model are not unique
【问题讨论】:
-
IntegrityError看起来像是来自内容类型表,它是 contrib 包之一。我敢打赌,您尝试加载的数据库中已经包含某些内容,可能来自先前的加载失败。由于看起来您正在使用 SQLite,因此请删除数据库文件,syncdb如果需要创建新数据库,然后重试加载。 -
同意@Mike DeSimone 除了
syncdb将使用数据初始化content_types,因此您可能会遇到相同的错误(按照他的建议查看!)。您可能需要编辑 dumpdata.json 以取出 content_types 的数据。 -
删除了 sqlite 数据库。做了同步数据库。试过 loaddata = 同样的错误。