1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MySQLdb.OperationalError: (2013, 'Lost connection to MySQL server during query')の対応方法

Last updated at Posted at 2024-03-27

概要

[環境]
django、mysql、uwsgi、nginxを用いたwebサーバ

[エラー内容]
pythonのmultiprocessingを用いた並列処理実装時に、下記のエラーが発生しました。

MySQLdb.OperationalError: (2013, 'Lost connection to MySQL server during query')

[想定原因]
調べた限りでは、子プロセスを起動時にDB接続が切れてしまうことが原因のようです。

下記の対応方法を実施前に

mysqlの max_allowed_pa​​cketを編集することでエラー解消できることもあるみたいです。
その対応方法が多く掲載されていたため、先にそちらを実施いただくことをおすすめします。
[参考記事]
https://stackoverflow.com/questions/1884859/lost-connection-to-mysql-server-during-query

対応方法

  1. 親プロセスから子プロセスを起動する際に、DBの接続をすべて閉じる
  2. 子プロセス内でDB処理を挟む形でDB接続とDB接続を閉じる処理を追加
親プロセス
from django import db

# DB接続をすべて閉じる
db.connections.close_all()
p = Process(target=function, args=(var))
p.start()
子プロセス
from django.db import connection

#DBへの接続処理
connection.connect()

#DB関連の処理をここに記載

# 接続終了
connection.close()
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?