---
slug: "django-mysql-client-2027-malformed-packet-error"
title: "MySQL で 2027 Malformed packet エラーが出る場合の解決ヒント"
description: "Django Allauth で、SocialAccount を指定せずにログイン後のリダイレクト先を共通設定で返すビュー実装。`LOGIN_REDIRECT_URL` の挙動と上書き方法。"
url: "https://www.ytyng.com/blog/django-mysql-client-2027-malformed-packet-error"
publish_date: "2022-09-11T09:58:30Z"
created: "2022-09-11T09:58:30Z"
updated: "2026-05-11T13:21:38.929Z"
categories: ["Django", "MySQL"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/b6fe88d79eee446c85a45a38487d9f1a.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# MySQL で 2027 Malformed packet エラーが出る場合の解決ヒント

<h2>概要</h2>
<p>Django で 生SQL を発行する際、特定の SQL&nbsp; で</p>
<pre>&nbsp; File "&lt;my-project&gt;/.venv/lib/python3.9/site-packages/MySQLdb/connections.py", line 259, in query<br /> _mysql.connection.query(self, query)<br />django.db.utils.OperationalError: (2027, 'Malformed packet')</pre>
<p>が発生した。</p>
<h2>環境</h2>
<pre><span>django </span>= <span>"==3.2.15"<br />mysqlclient = "==2.0.3" (2.1.1でも発生するのを確認した)<br /></span></pre>
<h2>再現コード</h2>
<p>発生するコードは次のようなもの</p>
<pre>with connections['default'].cursor() as cursor:<br />    sql = """SELECT status_id FROM order_status<br />WHERE order_status_name IN ("入金済み", "完了")"""<br />    cursor.execute(sql)<br />    print(cursor.fetchall())</pre>
<p>この時、<strong>この SQL は結果が期待どおりではないものの完了し、次のSQL の発行時に</strong></p>
<pre>django.db.utils.OperationalError: (2027, 'Malformed packet')</pre>
<p>このエラーが発生する。</p>
<h2>解決方法</h2>
<pre>SELECT status_id FROM order_status<br />WHERE order_status_name IN ("入金済み", "完了")</pre>
<p>この SQL 文で</p>
<pre>order_status\nWHERE</pre>
<p>となっている箇所の、改行の前後どちらかに半角スペースを入れるか、</p>
<pre>"入金済み", "完了"</pre>
<p>このダブルクォーテーションを<strong>シングルクオーテーションに変える</strong>。それで発生しなくなる。</p>
<p>MySQL では、ダブルクオーテーションは避けたほうが良い。</p>
