カラムを追加する作業があった。
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 | |
データベース上もそうなってる。
ちょっと調べたら、
ということらしい。
意図しない型の変換に注意!
CONVERT TO CHARACTER SET を用いた場合、型が自動的に変換されてしまうことがあります。
たとえば、utf-8 から utf8mb4 に変更する場合は、text 型のカラムは自動的に mediamtext に変換されます。
確かに、少し前にutf8mb4に変えました。そしてそれはmigrationでやらなかったのでannotateも実行されておらず、今になって気づいたわけです…。