我没有在我的配置中设置变量CONN_MAX_AGE,据说它将默认为0,这意味着每个请求都会重新打开一个新的连接。但在我的程序中,它不断显示错误(2006年,服务器消失)因为每个查询开始。我不知道为什么。在我的Django中有一个2006年的错误(服务器消失了),为什么?
回答
你并不孤单。这是自1.6以来已知的问题,我相信依然存在。 (很高兴能够纠正)。与该问题有关的原始文档from the Django Project.
大致上,我会重新配置您的问题,以便您定期打开新的数据库连接。我们有很多连接到MySQL的长时间运行的进程,并发现这是一个经常性问题。
您有三种选择。
稍微分开你的功能,以便块可以建立自己的连接。这应该是你所描述的设置的隐含行为,但我也遇到了问题。
从连接的Django的进口分贝
for thing in some_data:
db.connections.close_all()
your_stuff_here()
显式关闭(以及随后的重启)也比隐的行为,这也取决于你的MySQL超时是如何配置的清晰。
一个非常哈克解决方法是来包装你的内部函数在try /除外:
from django.db.utils import OperationalError
try:
stuff = Stuff.objects.get(id=123456)
except OperationalError:
from django.db import connections
c = connections['default'].cursor()
stuff = Stuff.objects.get(id=123456)
这绝对有效,当光标连接重新打开它在发生故障的事件。虽然我将它作为我们长期运行的进程中的一个修复程序实施,但这绝对是一种破解。我不推荐它,我们随后将它重构为第一种方法。
最后,您可能会升高MySQL超时,这在django文档页面中提到的是一个不太理想的解决方案。
非常感谢,我认为CONN_MAX_AGE是无用的,我已将它设置为不同的值,但它仍然是我从mysql processlist中看到的相同连接。 –
CONN_MAX_AGE仅用于Django使用信号处理HTTP请求。所以如果您正在运行管理命令,则需要明确调用close_old_connections,以便检查需要关闭的时间。如我错了请纠正我。 –
- 1. mysql服务器消失了(错误#2006)
- 2. MySQL服务器已消失 - 2006年的MySQL错误:
- 3. 2006年:MySQL服务器已经消失
- 4. 我的网站抛出一个错误:错误号码:2006年MySQL服务器已经消失
- 5. PHP的MySQL的PDO:常规错误:2006年MySQL服务器已消失
- 6. 导入数据库:在667线2006年错误(HY000):MySQL服务器已消失
- 7. Django的 - OperationalError:(2006年, 'MySQL服务器已经走了')
- 8. Python和Django的OperationalError(2006年,“MySQL服务器已经走了”)
- 9. ERROR 2006年(HY000):MySQL服务器已经在1号线消失
- 10. MySQL错误2006(HY000)在线406:MySQL服务器已经消失
- 11. 如何解决错误“#2006 - MySQL服务器已消失”
- 12. 错误2006: “MySQL服务器消失” 使用Python,瓶Microframework和Apache
- 13. 错误2006(HY000)行9675:MySQL服务器已经消失
- 14. MAMP - #2006 - MySQL服务器已经消失
- 15. #2006 - MySQL服务器已消失
- 16. MySQL服务器已消失(代码2006)
- 17. MySQL服务器在delayed_job任务中消失了错误
- 18. 在我的linux服务器,我得到了一个PHP错误,但我看不到错误,为什么?
- 19. 为什么我的django locales失败了?
- 20. 为什么我的web服务给我一个错误500?
- 21. 了mod_python/MySQL错误有大量的数据: “OperationalError:(2006年, 'MySQL服务器已经走了')”
- 22. MySQL错误2006:MySQL服务器在执行cron作业时消失
- 23. 它为什么有3个错误?我做了什么错误?
- 24. 为什么我的lambda消失了?
- 25. 为什么我的tableHeaderView消失了
- 26. 为什么我的链接消失了?
- 27. 为什么我的数据消失了?
- 28. Magento的捆绑产品SQLSTATE [HY000]:常规错误:2006年MySQL服务器已消失
- 29. MySQL错误2006年MySQL服务器已消失之后升级到5.6.10使用自制的最大OS X 10.8.3
- 30. MySQL服务器在PHP中消失了
您需要更具体些。这是通过视图加载页面吗?运行管理命令?例如,它是每个视图,还是仅仅是一些 - 你在上传大文件? – Withnail
我在命令模式下运行我的程序,并且我的程序将持续大约5小时,并持续向db发送查询。在我的程序结束时,它连续报告错误。但我的配置如上设置。我期待着你的回答。 @Withnail –