嗨#1人,如何调试:内部错误当前事务被中止,忽略,直到事务块结束
我做我与GeoDjango内置的第一步,我期待更好的选项,以检查故障的SQL语句命令。
到目前为止,我只是想在我的postgresql表中安全lng + lat点。
模型与定义:
geolocation = models.PointField(_('Geo Location'),
geography=True,
null = True,
blank = True,
help_text=_('Geolocation with Longitude and Latitude'))
objects = models.GeoManager()
在我看来,我尝试执行以下命令
savedProject.geolocation = GEOSGeometry('POINT(%s %s)' %(u_lng,u_lat))
,但我收到以下错误,当我尝试保存表单:
异常类型:InternalError 异常值:当前事务为 中止,命令被忽略,直到交易块结束
这个错误的原因是什么?我相信sql语句可能有问题,但是最好的检查方法是什么? Django仅提供一般错误消息“内部错误”。
谢谢您的帮助和建议!
您建议的SQL日志记录配置不提供任何addit离子控制台为我记录。我有DEBUG = True,所以我不知道还有什么可以尝试实际看到SQL。我在我的.extra()调用中出错,我的地方有一个错字。花了我几个小时才注意到它。如果我能看到我生成的SQL,那将是一块蛋糕。我解决了我的问题,但Django肯定没有帮助。 – gdonald 2012-10-20 16:25:43
我给你的答案+1,因为“在大多数情况下,这意味着以前的SQL语句执行失败。”我的问题就是这样。堆栈跟踪显示一个对象无法保存,但它实际上是一个查询。根据我的经验,在大多数情况下,Django堆栈跟踪根本没有帮助。 – gdonald 2012-10-20 16:30:49
我专注于“不提供**任何额外的**控制台日志记录”。所以我更新了答案,以包含测试此LOGGING配置的简单方法。这可以让你知道这是来自你的项目(设置?)还是环境。 – jpic 2012-10-20 16:41:40