我正在将遗留数据库迁移到我在本地运行的一系列模型中。我连接到遗留数据库并运行了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是否有内置的处理方式。
谢谢!
答案 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.
。