MySQL 8.0.11 ENGINE=InnoDB ROW_FORMAT=Dynamic CHARSET=utf8 MySQL で utf8 な varchar の 85 と 86 は、バイト数だと 85*3 = 255 86*3 = 258 なので、フィールド長のためのサイズが 1 バイトか 2 バイトかの境があります。 しかし、いままできちんと検証したことがなかったので確かめてみました。 まず、次のように varbinary で長い列を持つテーブルを作ります。65534 以上の長い列だと失敗します。これはバイト数に 2 バイト必要なので 65534 だと 65534+2 で 65536 となり、MySQL のレコード長の上限を超えてしまうためです。 drop table if exists t; create table t (c varbinary(65534) not null)