読者です 読者をやめる 読者になる 読者になる

webネタ

技術系ブログ。web系SE。1988。♂。@rhong_

mysqlのvarcharaはバイト数でなく文字数

mysql version : 5.6.10

確認用のテーブル

mysql> CREATE TABLE `testes` (
    ->   `id` int(11) NOT NULL AUTO_INCREMENT,
    ->   `name` varchar(15) NOT NULL,
    ->   PRIMARY KEY (`id`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

15文字ならokだが、1文字超えるとエラー

mysql> insert testes (name) values ("あいうえおあいうえおあいうえお");
Query OK, 1 row affected (0.00 sec)

mysql> insert testes (name) values ("あいうえおあいうえおあいうえおa");
ERROR 1406 (22001): Data too long for column 'name' at row 1

バイトでなく、ちゃんと文字数で判定してる

mysql> insert testes (name) values ("abcdeabcdeあいうえおa");
ERROR 1406 (22001): Data too long for column 'name' at row 1

mysql> insert testes (name) values ("abcdeabcdeあいうえお");
Query OK, 1 row affected (0.00 sec)