大家好,Stackoverflow
我对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))
但当我尝试保存表单时,收到以下错误:
Exception Type: InternalError Exception Value: current transaction is aborted, commands ignored until end of transaction block
此错误的原因是什么?我相信sql语句可能有问题,但最好的检查方法是什么?Django只提供一般错误消息“内部错误”。
谢谢你的帮助和建议!
在大多数情况下,这意味着前一条SQL语句未能执行。在这种情况下,您应该:
启用SQLlogging,请参阅下面要粘贴到settings.py中的代码片段
设置DEBUG=1,否则不会记录SQL
再次运行runserver,您将在控制台中看到所有SQL查询
直接在数据库中执行最后一个SQL查询,然后应该找到哪些查询失败,然后应该能够调试它们,或者打开一个特定于导致问题的查询的新问题。您可以使用phpMyAdmin,或者直接使用CLI客户机,或者任何数据库客户机,逐个执行SQL查询,直到找到需要爱的查询为止。
SQL日志记录配置:
如果此配置没有为
runserver
提供任何附加控制台输出,请尝试django-autocomplete-light's example test_project:阅读并粘贴
/tmp
中的安装命令将dir改为
autocomplete_light_env/src/django-autocomplete-light/test_project
打开
test_project/settings.py
,将LOGGING
配置替换为上面的配置运行服务器并打开浏览器
您的控制台将如下所示:
相关问题 更多 >
编程相关推荐