远程数据库连接上的Django shell(加号)超时

时间:2015-06-08 17:20:48

标签: python mysql django

我正在将遗留数据库迁移到我在本地运行的一系列模型中。我连接到遗留数据库并运行了inspectdb来重新创建模型。现在我正在编写函数来将众多字段与新模型中的等效字段配对。我一直在使用shell_plus,第一分钟左右的查询效果很好,但我的连接时间不断超时 以下内容:

RemoteArticle.objects.using("remote_mysql").all()    
django.db.utils.OperationalError: (2013, 'Lost connection to MySQL server during query')

是否有一个命令我可以运行a)在运行查询之前重新连接到db(所以我不必重新打开shell_plus),或者理想情况下b)使我的所有查询每次都自动重新连接我跑了吗?

我在其他平台上看到了超时问题,但我不确定Django是否有内置的处理方式。

谢谢!

2 个答案:

答案 0 :(得分:1)

此处有page in the MySQL个文档。由于您显然正在尝试迁移大型数据库,因此该部分可能适用于您:

  

有时候,“查询期间”表单会在数百万行时发生   作为一个或多个查询的一部分发送。如果你知道这是   发生这种情况时,你应该尝试从默认值增加net_read_timeout   30秒到60秒或更长,足以用于数据   转移到完成。

超时是有意义的,因为all()只是一个查询来检索所有行。因此,在每个查询之前重新连接不是解决方案。如果无法更改net_read_timeout,您可能需要考虑分页。

答案 1 :(得分:0)

我相信Lost connection to MySQL server during query的发生是因为你耗尽了MySQL资源,如超时,会话和内存。

如果问题是由于超时,请尝试在数据库服务器上增加超时--net_read_timeout=100.