11年ほど前に書いた日記がふと目にとまりました。CHAR(0)という列を定義できるというお話。
sakaik.hateblo.jp
当時のバージョンが明記されていないため、よくわからないのですが、最新の 8.0.20では挙動が変わっているようです。
mysql> CREATE TABLE t1 ( a CHAR(0), b VARCHAR(0));
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO t1 VALUES ("ABCDE", "FGHI");
ERROR 1406 (22001): Data too long for column 'a' at row 1
ちゃんとエラーとして動作するようになりました!(というか勝手に切り捨てるのをやめただけとも言う)
当時の実行結果で、WARNING …