NI-Lab.

nilog:

← 前の日 2015-02-27 次の日 →
← 一年前 一年後 →
Twitter (2015-02-27)
文字列系のカラムをまとめて utf8mb4 に変更。

mysql> alter table foobartbl convert to character set utf8mb4;
Query OK, 160325 rows affected (10.87 sec)
[t] 2015-02-27 21:58:50
関連するかも情報
でも、カラムの情報に

`foobarclm` text CHARACTER SET utf8 NOT NULL,

なんて表示されるようになってしまった。
次はカラムを utf8mb4 にしないと。
[t] 2015-02-27 21:55:27
文字列系のカラムをまとめて utf8mb4 に変更。

mysql> alter table foobartbl convert to character set utf8mb4;
Query OK, 160325 rows affected (10.87 sec)
[t] 2015-02-27 21:58:50
`foobarclm` text CHARACTER SET utf8 NOT NULL,

が、

`foobarclm` mediumtext NOT NULL,

になった。
[t] 2015-02-27 22:01:24
テーブルは ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 なので、カラムも同じ文字コードになったということでいいんだろうけど、
text 型が mediumtext 型になってしまったのはなんでなの。。。
[t] 2015-02-27 22:01:41
MySQL :: MySQL 5.5 Reference Manual :: 13.1.7 ALTER TABLE Syntax http://dev.mysql.com/doc/refman/5.5/en/alter-table.html
[t] 2015-02-27 22:02:07
MySQL :: MySQL 5.5 Reference Manual :: 11.4.3 The BLOB and TEXT Types http://dev.mysql.com/doc/refman/5.5/en/blob.html
[t] 2015-02-27 22:03:09
MySQL :: MySQL 5.5 Reference Manual :: 11.9 Using Data Types from Other Database Engines http://dev.mysql.com/doc/refman/5.5/en/other-vendor-data-types.html
[t] 2015-02-27 22:06:09
MySQL :: MySQL 5.5 Reference Manual :: 11.7 Data Type Storage Requirements http://dev.mysql.com/doc/refman/5.5/en/storage-requirements.html
[t] 2015-02-27 22:07:02
・TEXT:64KBまでの可変長文字列
・MEDIUMTEXT:約1.6MBまでの可変長文字列
・LONGTEXT:約4.3GBまでの可変長文字列

MySQLのテキスト型 | Koumei Soft 開発ログ http://blog.ks2.info/?p=462
[t] 2015-02-27 22:07:45
・TEXT[(M)] 最長65,535 (216 - 1) バイト
・MEDIUMTEXT 最長16,777,215 (224 - 1) バイト

BLOB型とTEXT型 - MySQLのデータ型 - MySQLの使い方 http://www.dbonline.jp/mysql/type/index6.html
[t] 2015-02-27 22:08:21
まあ、デカいのが入るようになったんだからいいか。。。
[t] 2015-02-27 22:08:41
基本的にテーブルとカラムはこの2つを実行すれば良し
alter table <table name> default character set utf8mb4;
alter table <table name> convert to character set utf8mb4;
[t] 2015-02-27 22:10:21
と思ったらエラー出た(´・ω・`)

varchar(255)とかのカラムがダメなのかもしれない。
[t] 2015-02-27 22:13:15
mysql> alter table hogetbl convert to character set utf8mb4;
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
[t] 2015-02-27 22:13:25
varchar(256)にしておけばよかったのかも。
[t] 2015-02-27 22:14:24
@y_aki インデックス貼っていない varchar(255) はエラー出ないのでそうかもしれないです。。
[t] 2015-02-27 22:18:29
@y_aki おぉ・・・ありがとうございます。
[t] 2015-02-27 22:23:39
MySQL(InnoDB) で "Index column size too large. The maximum column size is 767 bytes." いわれるときの対策 - かみぽわーる http://blog.kamipo.net/entry/2012/11/13/102024
[t] 2015-02-27 22:24:01
「MySQL(InnoDB)では、ひとつのカラムのキープレフィックスの最大値が767バイトという制限がある」
「MySQL 5.5.14以降だとinnodb_large_prefixというオプションが追加されてて、キープレフィックスの制限を3072バイトまで拡張できます」
[t] 2015-02-27 22:24:23
「ただし、ROW_FORMATをDYNAMICかCOMPRESSEDにする必要がある(デフォルトはCOMPACT)」
[t] 2015-02-27 22:27:49
2015年02年27日のnilogをすべて表示する

- NI-Lab.
- Mastodon (@nilab@mastodon-japan.net)
- Twitter (@nilab)
- Timelog (@nilab)
- はてなブックマーク (id:nilab)

Web Services by Yahoo! JAPAN