użyłem następujące polecenia, aby wygenerować 2 uchwyty:Problem ładowania Django Oprawa: IntegrityError: (1062, "Duplikat pozycja '4' dla klucza 'user_id'")
./manage.py dumpdata --format=json --indent=4 --natural auth.User > fixtures/user.json
./manage.py dumpdata --format=json --indent=4 --natural --exclude=contenttypes --exclude=auth > fixtures/full.json
Mam następujące urządzenie nazwany user.json:
[
{
"pk": 4,
"model": "auth.user",
"fields": {
"username": "foo",
"first_name": "Se\u00e1n",
"last_name": "Hayes",
"is_active": true,
"is_superuser": true,
"is_staff": true,
"last_login": "2010-09-27 21:57:45",
"groups": [],
"user_permissions": [],
"password": "!",
"email": "[email protected]",
"date_joined": "2010-09-27 21:57:45"
}
}
]
i dodaje oprawa nazwie full.json:
[
{
"pk": "72a75887b4a0ce06a61f9183fe1c0e15",
"model": "sessions.session",
"fields": {
"expire_date": "2010-10-11 21:57:45",
"session_data": "gAJ9cQEoVRJfYXV0aF91c2VyX2JhY2tlbmRxAlUOZmIuYXV0aC5GYkF1dGhxA1UNX2F1dGhfdXNl\ncl9pZHEEigEEdS5hOGZlODU0MmRjYmUwNmEzODIwNjhiYzYyODc2MWQxZA==\n"
}
},
{
"pk": 1,
"model": "sites.site",
"fields": {
"domain": "example.com",
"name": "example.com"
}
},
{
"pk": 2,
"model": "common.userprofile",
"fields": {
"money": 10,
"energy": 10,
"experience": 0,
"stamina": 10,
"health": 10,
"user": 4
}
},
{
"pk": 2,
"model": "missions.missionprofile",
"fields": {
"user": 4,
"last_area_viewed": null
}
},
{
"pk": 1,
"model": "fb.facebookuser",
"fields": {
"updated": "2010-09-27 21:57:45",
"uid": "24411841",
"created": "2010-09-27 21:57:45",
"access_token": "foo",
"url": "http://www.facebook.com/profile.php?id=24411841",
"user": 4,
"img_url": null,
"name": "Se\u00e1n Hayes"
}
}
]
uruchamiając następujące polecenia (w dowolnej kolejności):
./manage.py loaddata user
./manage.py loaddata full
podnosi następujący wyjątek:
Problem installing fixture '/projectpath/fixtures/full.json': Traceback (most recent call last):
File "/usr/lib/pymodules/python2.6/django/core/management/commands/loaddata.py", line 169, in handle
obj.save(using=using)
File "/usr/lib/pymodules/python2.6/django/core/serializers/base.py", line 165, in save
models.Model.save_base(self.object, using=using, raw=True)
File "/usr/lib/pymodules/python2.6/django/db/models/base.py", line 528, in save_base
result = manager._insert(values, return_id=update_pk, using=using)
File "/usr/lib/pymodules/python2.6/django/db/models/manager.py", line 195, in _insert
return insert_query(self.model, values, **kwargs)
File "/usr/lib/pymodules/python2.6/django/db/models/query.py", line 1479, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/lib/pymodules/python2.6/django/db/models/sql/compiler.py", line 783, in execute_sql
cursor = super(SQLInsertCompiler, self).execute_sql(None)
File "/usr/lib/pymodules/python2.6/django/db/models/sql/compiler.py", line 727, in execute_sql
cursor.execute(sql, params)
File "/usr/lib/pymodules/python2.6/django/db/backends/util.py", line 15, in execute
return self.cursor.execute(sql, params)
File "/usr/lib/pymodules/python2.6/django/db/backends/mysql/base.py", line 86, in execute
return self.cursor.execute(query, args)
File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 166, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35, in defaulterrorhandler
raise errorclass, errorvalue
IntegrityError: (1062, "Duplicate entry '4' for key 'user_id'")
jakieś pomysły na to, co się dzieje? Zdaję sobie sprawę, że istnieje problem z przekazywaniem referencji w MySQL, ale nie powinno to mieć znaczenia, jeśli obiekt użytkownika o ID 4 jest instalowany przed urządzeniami, które zawierają obcy klucz, prawda?
próbowałem też dzielenie się full.json do mniejszych uchwytów i zainstalowane je jeden na raz. Jak tylko klucz obcy dla użytkownika jest obecny, błąd jest generowany. –
Czy możesz umieścić tutaj kod dla swoich modeli? –
Czy w swoich modelach są ustawione jakieś "unikalne" ustawienia? –