カラムを追加する作業があった。
rails g migrationしてrake db:migrateしたら終わりー、と思ったら、

Annotated (8): ...

8!?今モデル1つ変えただけなんだけど…

$ git diff
--- a/db/schema.rb
+++ b/db/schema.rb

-    t.text     "title",         limit: 65535
-    t.text     "url",           limit: 65535
+    t.text     "title",         limit: 16777215
+    t.text     "url",           limit: 16777215

こんな感じで、limit指定してないtextカラムが軒並み変わってる。

$ rails db   
mysql> SHOW COLUMNS FROM tasks;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| title         | mediumtext   | YES  |     | NULL    |                |
| url           | mediumtext   | YES  |     | NULL    |                |

データベース上もそうなってる。

ちょっと調べたら、

http://beanidealisticrealist.hatenablog.com/entry/2013/05/14/MySQL%E3%81%A7%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%A8%E3%82%AB%E3%83%A9%E3%83%A0%E3%81%AE%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E4%B8%80%E6%8B%AC%E5%A4%89%E6%9B%B4

ということらしい。

意図しない型の変換に注意!

CONVERT TO CHARACTER SET を用いた場合、型が自動的に変換されてしまうことがあります。
たとえば、utf-8 から utf8mb4 に変更する場合は、text 型のカラムは自動的に mediamtext に変換されます。

確かに、少し前にutf8mb4に変えました。そしてそれはmigrationでやらなかったのでannotateも実行されておらず、今になって気づいたわけです…。