ошибка с запросом модели Django - PullRequest
1 голос
/ 04 октября 2010

Я обнаружил ошибку при выполнении следующего поиска:

class status(models.Model):
    pid = models.IntegerField()
    phase = models.TextField()
    rejected = models.IntegerField()
    accepted = models.IntegerField()
    type = models.IntegerField(default=1)
    date = models.DateTimeField(primary_key = True)
    time_taken = models.IntegerField(null = True)

    class Meta:
        db_table = "crawl_status_ss"

запрос:

    statusIn = status.objects.get(pid=12345,phase='crawling')

Ошибка:

django.db.utils.DatabaseError: current transaction is aborted, commands ignored
until end of transaction block

Кто-нибудь знает, в чем причина?

РЕДАКТИРОВАТЬ:

В моем предыдущем разделе моего кода, у меня есть исключение при вставке записи в другую таблицу, но я поймал исключение:

for entry in blogEntries:        
            link = entry['link'].encode('utf-8')
            title = entry['title'].encode('utf-8')
            date1 = entry['date'][:10].encode('utf-8')
            content = entry['content'].encode('utf-8')
            try:
                post = postTitle(site_id=url,post_url=link,post_title=title)
                post.save()
                postId = post.post_id

                hashString = getMD5Hash(content)

                blogContent = postContent(post_content=content,post_id=post,hash=hashString,site_id = url,post_date=date1)
                blogContent.save()

            except:
                print 'Error:' + str(sys.exc_value)
                continue

1 Ответ

2 голосов
/ 04 октября 2010

Django статистика транзакции базы данных для вашего просмотра. Поэтому, когда вы перехватываете исключение, это означает, что транзакция находится в состоянии сбоя, и вы больше не можете запускать SQls. Вы действительно должны попытаться выяснить, в чем же состоит настоящая проблема, когда она терпит неудачу в ваших post.save или blogContent.save методах Если вам действительно все равно (поскольку вы просто перехватываете исключение и продолжаете), вы должны сами управлять транзакциями. Для получения справки см. Документы:

...