読者です 読者をやめる 読者になる 読者になる

Data truncated for column 'hoge' at row 1 エラーに遭遇

魔境のコード解析してた

Django 側では models.CharField で 255 まではいるようにしたフィールドをたくさん用意しておいて、それを適宜 int や string や boolean や datetime で擬似的に処理をするというちょっと複雑なフィールドがあるのだけど(まあちょっと慣れたらそういうシステムはありそうだが)、そこで不正なデータ(boolean でいれるべきフィールドに文字列をいれている)であることはわかっていたが、しかしなぜこのエラーがでるかわからなかった。エラーの意味自体は「このカラムにはいりきらないから切り詰めていれておいたよ」というものだけど、それが Django 側ではエラーとして落としてしまっているようだった。
結局これは2段階のフィールド設計になっていて、「一時的に登録するフィールド→正式に登録するフィールド」というのが用意してあった。そのとき一時的に登録するフィールドが Django の models 上では 255 文字許容するようにしていたがMySQL 側のテーブルでは varchar が 1,7, 15, ... など個別設定したフィールドになっていた。ちなみに正式に登録するフィールドのほう(よくデバッグ時にもみていた)ところは MySQL のテーブル定義でも varchar が 255 文字許容していたのでなかなかきづけなかった。
参考::MySQL の文字コード設定を後から変えるテスト 民芸的プログラミング 〜ソフトウェア開発日記〜/ウェブリブログ

まあ

エラーの本質は難しくなくても、ちょっとシステムが複雑だとトラブルシューティングに戸惑うね

広告を非表示にする