2055: Lost connection … , system error: 10053 が出たときの対処法 | MySQL, Python
私の場合、インサートするレコード数を分割(約20,000レコード → 5,000レコード単位で分割)することで、エラーは出なくなりました。
この記事で使用したソフトウェアのバージョンを記載しておきます。
Windows 10
MySQL 8.0
Python 3.7.4
mysql-connector-python 8.0.16
エラーが発生したケース
Python の mysql-connector-python で20,000レコードほどのインサートを試みたところ、エラーになりました。
cur.executemany(sql, values)
conn.commit()
2055: Lost connection to MySQL server at 'localhost:3306', system error: 10053 確立された接続がホスト コンピューターのソウトウェアによって中止されました。
成功したケース
Windows ソケットのエラー コード、値、および意味によると、以下のように記載されています。
そのため、インサート処理に時間がかかり過ぎていることが原因かなと。
タイムアウト時間の延長も考えましたが、ウェブに適当な情報が見つかりませんでした。
そのため、一度にインサートするレコード数を減らす方針で対処することに。
以下のように、5,000レコードずつインサートしたところ、成功しました。
もう少しスマートに書きたいですね。。。
n_exe = 5000
n_rec = len(values)
if n_exe > n_rec: n_exe = n_rec
for idx in range(0, n_rec, n_exe):
idx_next = idx + n_exe
if idx_next > n_rec: idx_next = n_rec
cur.executemany(sql, values[idx:idx_next])
conn.commit()
おわりに
MySQLで、2055: Lost connection … , system error: 10053 が出たときの対処法について記載しました。
今回は、インサートするレコード数の分割で対処しました。
DBには詳しくないため、もっと上手い方法があるかも知れません。
ご参考まで。
この記事が気に入ったらサポートをしてみませんか?