2010-09-28 13 views
6

2 fikstür üretmek için aşağıdaki komutları kullandım:Django fikstürünü yükleme sorunu: IntegrityError: (1062, "user_id" anahtarının "4" girişi)

./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 

user.json adında aşağıdaki armatürüm var:

[ 
    { 
     "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" 
     } 
    } 
] 

ve full.json adında aşağıdaki bağlantı:

[ 
    { 
     "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" 
     } 
    } 
] 

Aşağıdaki komutları çalıştırarak (her iki sırada):

./manage.py loaddata user 
./manage.py loaddata full 

aşağıdaki özel durumu artırır:

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'") 

Neler olup bittiği hakkında bir fikriniz var mı? MySQL'de ileriye dönük referanslar ile ilgili bir sorun olduğunun farkındayım, fakat 4 numaralı Kullanıcı nesnesinin yabancı bir anahtar içeren donanımlardan önce kurulup kurulmaması önemli değil mi?

+0

Bkz Ben de daha küçük armatürleri içine full.json bölme kadar çalıştı ve bir teker teker yüklü. Kullanıcıya bir yabancı anahtar mevcut olduğu anda, hata oluşturulur. –

+0

Modellerinizin kodunu buradan gönderir misiniz? –

+1

Modellerinizde herhangi bir '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'ayarlanmış mı? –

cevap

15

ben aynı problem vardı Ashok'un açıklama gereğince, bu görünüşte demirbaşı anlamına gelen "ham" modunda çalışır durumda olup olmadığını kontrol etmek için benim sinyal işleyici değiştirerek çözüldü Dynamic Dynamic Fixture yüklenen:

def create_user_profile(sender, instance, created, **kwargs): 
    if created and not kwargs.get('raw', False): 
     UserProfile.objects.create(user=instance) 

How do I prevent fixtures from conflicting with django post_save signal code?

0

Django'nun statik fikstürü bir ANTI-PATTERN'dir, bu nedenle bu tür bir probleminiz vardır. Bu armatürü sizin için üreten bir kütüphane kullanmanızı tavsiye ederim.

denemenizi öneriyor