Pythonのpandasを使用して辞書型オブジェクトをMySQLに挿入しようとした時に発生したエラーです。
以下のエラーメッセージが排出されました。
django.db.utils.DataError: (1406, “Data too long for column ‘xxxxx’ at row 1”)
本日はこのエラーの解決方法を紹介します。
コンテンツ
エラーメッセージ
先に説明しました、エラーメッセージを分解して調べていきます。
django.db.utils.DataError: (1406, “Data too long for column ‘xxxxx’ at row 1”)
django.db.utils.DataError:
まず最初のdjango.db.utils.DataError:です。
こちらに関しては、私がDjangoでテストコードを書いているときに起こりましたので、djangoの内部で吐き出したエラーです。
具体的に書いていたコードは、djangoのテストコードで、pandasを使用してMySQLに大量の辞書型オブジェクトを挿入してmodelsオブジェクトを生成しようとしていました。
(1406, “Data too long for column ‘xxxxx’ at row 1”)
Data too longは、「データが長すぎ!!」という意味です。
‘xxxxx’にはMySQLのcolumn名が入っています。
つまり、columnに定義されている文字列の長さを超える値が挿入されようとしているという意味です。
エラー原因
先ずは、columnで実際に定義している文字列の長さを調べましょう。
xxxxxにはmaxlength=2を定義していました。
以下が実際のコードです。
models.py
1 2 3 4 5 |
xxxxx = models.CharField( max_length=2, blank=True, null=True ) |
着目したいのは、max_length=2のところです。
代入できるのは2バイトまでです。
今回私は2バイトしか入れてはダメなところにNoneという文字列の4バイトを入れようとしていました。
2バイトしか入れちゃダメなどころに4バイトも代入しようとすると当然クレームが来るわけです。
エラー解決
エラー解決をするには、代入するところを2バイト以下にすれば良いのです。
ちなみにNoneをやめて ” (アポストロフィ2つ)のNullにしました。
最後に
いかがだったでしょうか。
以上が、「【MySQL】Pythonの1406, “Data too long for column ‘xxxxx’ at row 1”のエラー」の紹介記事になります。
スクールを利用して本格的に学ぶ
いかがでしたでしょうか?
10人中9人が挫折すると言われるプログラミングを、ヒロヤンも実はプログラミングスクールで学習をしてきたからで、結果、今はPythonエンジニアとして働いています。
挫折率が高いプログラミングこそお金を払ってメンターを付けて、道を見失わないように環境を構築する必要があるのではないでしょうか。
これはダイエットで自分一人では痩せられないけど、トレーナーを付けて否が応でもせざるを得ない環境を作ると一緒ですね。
ヒロヤンもプログラミング勉強開始直後はあれこれ悩みましたが、悩むよりも手っ取り早くスクールに登録した方が最短ルートで勉強できるのではないかと考え、結果挫折せずに今に至っています。
今なら無料でキャリアカウンセリングを行っているTechAcademyのようなプログラミングスクールもありますのでこれを機会に是非カウンセリングだけでも受けてみてはいかがでしょうか?
上記リンク先から無料相談ができます。
またこちら(↓)ではPython専用のプログラミングスクールをまとめ紹介しています。
コメントを残す