Найти - Пользователи
Полная версия: Ошибка django.db.utils.IntegrityError. Как поправить?
Начало » Django » Ошибка django.db.utils.IntegrityError. Как поправить?
1
buddha
БД - postgres, драйвер - psycopg2.
Пробую заполнить БД записями через метод bulk_create():
def test_bulk_create(db_engine_name):
    objs_list = []
    for i in range(10000):
        obj = Author(name='author_'+str(i), mail='author_'+str(i)+'@djangomail.de')
        objs_list.append(obj)
    Author.objects.using(db_engine_name).bulk_create(objs_list)
 
    objs_list.clear()
    authors = Author.objects.all()
    for i in range(10000):
        obj = Book(author=authors[i], title='book_'+str(i), page_count=300, exists=True, chars_count=300000, cost=347.77, sale_cost=244.07)
        objs_list.append(obj)
    Book.objects.using(db_engine_name).bulk_create(objs_list)
 
test_bulk_create('postgres')

Записи модели Author создаются нормально, исключение выскакивает при вызове bulk_create:
django.db.utils.IntegrityError: ������������:  INSERT ������ UPDATE �� �������������� "app_main_book" ���������������� ���������������������� ���������������� ���������� "author_id_refs_id_a6160087" 
DETAIL:  �������� (author_id)=(106570) ���������������������� �� �������������� "app_main_author".

Заметил, что в БД записи создаются не с нулевого id(если перед созданием чистить таблички). Как это перенастроить\почистить не знаю пока, в БД не проф… Наверно это с этим связано, хотя на БД - Mysql функция отрабатывает нормально.

Если надо код моделей посмотреть, выложу…
slav0nic
глянь что в логе постгреса (то что ты запостил, только в чиатемом виде)
buddha
Я, к сожалению не настраивал логирование в БД, ибо неглубоки мои знания.
Проблему решил, причина была в том, что копилась последовательность для автополя.
Просто перед созданием новых записей в БД сбрасываю последовательность(manage.py sqlsequencereset).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB