DjangoのCharFieldを新しく追加した際に最長の文字数を指定するmax_lengthオプションをつけ忘れてコミットしてしまうことがありました。
max_lengthは必須オプションのはずなので、そもそもマイグレーションの段階でエラーになってmax_lengthをつけ忘れていることに気づけると思っていましたが、今回はエラーになっておらず後ほど見返すまで気づけませんでした。
現場ではPostgreSQLを使っていて、公式ドキュメントを読んだところPostgreSQLだけはCharFieldにmax_length無しでもエラーにならないようです。
ドキュメントには以下の説明がありました。
The maximum length (in characters) of the field. The max_length is enforced at the database level and in Django's validation using MaxLengthValidator. It's required for all database backends included with Django except PostgreSQL, which supports unlimited VARCHAR columns.
unlimited VARCHAR とありますが、以下のstack overflowを見たところ10485760
が最大値になるようです。(一般的に気にしないで良い長さだとは思いますが)
SELECT 'x'::varchar(1000000000); ERROR: length for type varchar cannot exceed 10485760
一応エラーにならないとはいえmax_lengthは指定していた方がバグを防げると思いますので、後からmax_lengthを追加しました。
DjangoにおけるDBでの挙動の違いが一つ発見できたので面白かったです。