- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我现在很迷茫。我在 Django 中运行一个脚本来创建一个假数据库,一遍又一遍地循环相同的代码。当出现以下错误时,我已经创建了超过 2.5k 个对象:
ProgrammingError: autocommit cannot be used inside a transaction
我查了一下,得到了一个显然已修复的错误单,但那是针对以前的版本,我使用的是 Django 1.6。这是完整的回溯:
---------------------------------------------------------------------------
ProgrammingError Traceback (most recent call last)
<ipython-input-31-0597bce30f92> in <module>()
----> 1 make_listeners()
<ipython-input-29-5697f122e144> in make_listeners()
28 seed = random.randint(0,len(user_ids_copy)-1)
29 requested_user = user_ids_copy.pop(seed)
---> 30 user.functions.listen_to(requested_user)
31 print i, user.pk, number_seed, original_seed
32 number_seed -= 1
.../models.py in listen_to(self, user_id)
715 except User.DoesNotExist:
716 return 'User DoesNotExist'
--> 717 request = ListenerRequest.objects.get_or_create(user=requesting, user_requested=requester, is_active=True)
718 if not request[1]:
719 if request.is_accepted:
/Library/Python/2.7/site-packages/Django-1.6-py2.7.egg/django/db/models/manager.pyc in get_or_create(self, **kwargs)
152
153 def get_or_create(self, **kwargs):
--> 154 return self.get_queryset().get_or_create(**kwargs)
155
156 def create(self, **kwargs):
/Library/Python/2.7/site-packages/Django-1.6-py2.7.egg/django/db/models/query.pyc in get_or_create(self, **kwargs)
378 obj = self.model(**params)
379 with transaction.atomic(using=self.db):
--> 380 obj.save(force_insert=True, using=self.db)
381 return obj, True
382 except DatabaseError:
/Library/Python/2.7/site-packages/Django-1.6-py2.7.egg/django/db/transaction.pyc in __exit__(self, exc_type, exc_value, traceback)
328 connection.autocommit = True
329 else:
--> 330 connection.set_autocommit(True)
331 # Outermost block exit when autocommit was disabled.
332 elif not connection.savepoint_ids and not connection.commit_on_exit:
/Library/Python/2.7/site-packages/Django-1.6-py2.7.egg/django/db/backends/__init__.pyc in set_autocommit(self, autocommit)
331 self.validate_no_atomic_block()
332 self.ensure_connection()
--> 333 self._set_autocommit(autocommit)
334 self.autocommit = autocommit
335
/Library/Python/2.7/site-packages/Django-1.6-py2.7.egg/django/db/backends/postgresql_psycopg2/base.pyc in _set_autocommit(self, autocommit)
171 def _set_autocommit(self, autocommit):
172 if self.psycopg2_version >= (2, 4, 2):
--> 173 self.connection.autocommit = autocommit
174 else:
175 if autocommit:
ProgrammingError: autocommit cannot be used inside a transaction
如果前 2500 个对象没有这个问题,为什么我会收到这个错误?
根据要求,这是 ListenerRequest
的模型,因为它似乎是导致错误的原因:
class ListenerRequest(models.Model):
listener_relationship_id = models.AutoField(primary_key=True)
#user is the person asking to listen
user = models.ForeignKey(User, related_name='requests')
#user_requested is the person being asked to be listen to
user_requested = models.ForeignKey(User, related_name='requested')
date_requested = models.DateTimeField(auto_now_add=True)
date_accepted = models.DateTimeField(null=True,blank=True)
denied_flag = models.BooleanField(default=False)
denied_date = models.DateTimeField(null=True,blank=True)
unlistened_flag = models.BooleanField(default=False)
unlistened_date = models.DateTimeField(null=True,blank=True)
is_active = models.BooleanField(default=True)
is_accepted = models.BooleanField(default=False)
最佳答案
如果您使用的是 django_postgrespool,当前版本(在撰写本文时)正在吞噬错误并返回一般错误“ProgrammingError:autocommit cannot be used inside a transaction”。
您可以通过暂时注释掉 settings.py 中的以下行来查看实际错误
DATABASES['default']['ENGINE'] = 'django_postgrespool'
有关更多详细信息,请参阅当前 Unresolved 问题:https://github.com/kennethreitz/django-postgrespool/issues/24
关于python - Django 错误有时会发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174332/
下面的代码旨在在首次打开工作簿时运行。 Sub Auto_Open() Dim LastRow As Integer LastRow = Sheet6.UsedRange.Rows.Count Act
当我尝试操作我的代码时,除了弹出调试错误外,它执行得很好。错误信息在这里。 我的完整代码在这里。 #include using namespace std; class String { publi
The invocation of the constructor on type 'WpfApplication1.MainWindow' that matches the specified bi
我正在使用 BaseAdapter: public class MyAdapter extends BaseAdapter{ private final LayoutInflater mInflate
我想做网页抓取。我写了代码 var connection = require('./mysqlConnection'); var c = new Crawler({ maxConnections
我的系统中发生 Java 堆空间错误。我尝试了很多来自 Stack Overflow 的解决方案,但没有任何效果。当我工作时 当按下 OK 然后 (我的项目没有错误) 我的 eclipse.ini 是
环境: i5 750 DDR3 4GWin7 专业版 x64 sp1 DXSDK 9.0c 2010 年 6 月 GeForce GT240(驱动程序 275.33)512MB MSVC 2008 s
这段代码是我写的。 import socket host = 'localhost' port = 3794 s = socket.socket(socket.AF_INET, socket.SOCK
我正在尝试引用 UTC 时间间隔获取本地日期时间,我正在执行下面的代码。 var dtString =DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss
我有一个非常简单的 C# 问题,它从库中加载 Windows WPF 窗口。这是代码: public partial class App : Application { public App(
我目前正在使用带有导航组件的底部导航,它工作正常但是当我们点击导航项 fragment 正在加载然后闪烁正在发生,即使当前选择的项目也会发生闪烁。它在加载 fragment 时发生。我的应用程序屏幕背
我是新来的 kotlin , 当我开始 Null Safety 时,我对下面的情况感到困惑. There's some data inconsistency with regard to initia
我有一个框,其中包含同时发生的两个独立的 css 转换。 当转换发生时,图标下方的标题和段落文本移动位置 参见 JS Fiddle:http://jsfiddle.net/Lsnbpt8r/ 这是我的
在为黑莓 10 构建电话间隙应用程序时,我遇到了异常情况。 [BUILD] Populating application source [BUILD] Parsing config.xml [
这个问题在这里已经有了答案: How to properly stop the Thread in Java? (8 个回答) 3年前关闭。 我看过How to properly stop the T
我试图弄清楚发生 fatal error 时如何刷新页面。基本上我正在访问图像 api 并将图像复制到我的服务器。我还每次都创建照片的缩略图版本。我会每隔一段时间收到一条错误消息,指出我的脚本试图分配
我正在尝试使用断言函数检查元素是否在屏幕上。我在我的测试应用程序 (AndroidDriver) 中使用 Appium 和 Java。我期望的是,如果元素在屏幕上,则返回 1;如果不在屏幕上,则返回
我正在开发图像上传系统。我使用 CommonsMultipartResolver 设置 maxUploadSize。当我尝试上传超过最大尺寸的图像文件时,会发生 MaxUploadSizeExcced
我有以下代码和@ComponentScan(basePackages = "com.project.shopping"),包结构为 com.project.shopping.Controller co
我尝试运行此程序作为测试,但收到错误“发生了 JNI 错误,请检查您的安装并重试”,然后是“发生了 Java 异常”。关于如何解决这个问题有什么想法吗? package java; public cl
我是一名优秀的程序员,十分优秀!