【发布时间】:2011-03-05 20:25:41
【问题描述】:
我目前正在使用 sqlite3 作为我的 Django 项目之一的数据库。我想将其更改为使用 postgresql,并且我想保持所有数据完整。
我使用./manage.py dumpdata > dump.json 创建数据转储,并将我的设置更改为使用 postgresql。首先尝试使用空数据库执行./manage.py loaddata dump.json 导致有关表不存在的错误,因此我运行./manage.py syncdb,然后再次尝试。这会导致此错误:
Problem installing fixture 'dump.json': Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/django/core/management/commands/loaddata.py", line 163, in handle
obj.save()
File "/usr/lib/python2.6/site-packages/django/core/serializers/base.py", line 163, in save
models.Model.save_base(self.object, raw=True)
File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 495, in save_base
rows = manager.filter(pk=pk_val)._update(values)
File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 448, in _update
return query.execute_sql(None)
File "/usr/lib/python2.6/site-packages/django/db/models/sql/subqueries.py", line 124, in execute_sql
cursor = super(UpdateQuery, self).execute_sql(result_type)
File "/usr/lib/python2.6/site-packages/django/db/models/sql/query.py", line 2347, in execute_sql
cursor.execute(sql, params)
File "/usr/lib/python2.6/site-packages/django/db/backends/util.py", line 19, in execute
return self.cursor.execute(sql, params)
IntegrityError: duplicate key value violates unique constraint "django_content_type_app_label_key"
- 这难道不是将数据从一个数据库移动到另一个数据库的正确方法吗?
- 我应该怎么做才能安全地切换数据库后端?
【问题讨论】:
-
我忽略了一些 django 表。
./manage.py dumpdata -e sessions -e admin -e contenttypes -e auth.Permission -e authtoken --natural > db.json然后做了./manage.py loaddata db.json。也许它可以帮助某人。详情看这个问题stackoverflow.com/questions/853796/…
标签: django postgresql sqlite