平成30/ 2018-12-14 11:09
Mysql Varchar 2017.02.13.00


####################
# Server version: 5.6.15 MySQL Community Server (GPL)
# engine=innodb charset=utf8 の場合は、varchar(10) に対し、10の全角がちゃんと入った。
#


CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `text` text NOT NULL,
  `title2` varchar(10) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='テスト'  
;

alter table test add title2 varchar(10) not null default '';

mysql>
mysql> insert into test(title2,text) values('0123456789','');
Query OK, 1 row affected (0.22 sec)

mysql> insert into test(title2,text) values('01234567891','');
ERROR 1406 (22001): Data too long for column 'title2' at row 1
mysql>
mysql> insert into test(title2,text) values('あいうえおかきくけこ','');
Query OK, 1 row affected (0.15 sec)



####################
# 以下の事象だったことがある。テーブルの型の問題だったのかな、。

utf8で、150文字まで許可するには、varchar(450)にしないとダメだった。

utf8 は、3から4バイトが1文字に必要とのこと。
varchar(450)だと4バイトのときに問題でそうだが、いまのところ、そのような問題ない。

当初、varchar(300)で良いと思っていたが、ダメだった。
abc  でも、6バイト使うらしい。

( Thanks. )
mysqlのカラムタイプ [varchar] とマルチバイト文字の長さ(日本語UTF-8の場合)
http://www.know-the-world.com/index.php/developer/2009/01/mysql_column_type_varchar_multibyte_utf-8