関連するかも情報 |
最新版バージョン Connector/J 5.1.34 "MySQL Connector/J is the official JDBC driver for MySQL."
MySQL :: Download Connector/J http://dev.mysql.com/downloads/connector/j/
[t] 2015-02-27 21:07:40
|
Oracle web アカウントでログイン……しなくてもOKだった( ´∀`)
「No thanks, just start my download.」
MySQL :: Begin Your Download http://dev.mysql.com/downloads/file.php?id=454397
[t] 2015-02-27 21:10:25
|
中に入ってた README.txt にはライセンス情報しか載っていない。。。 役に立ちそうなファイルは docs/README.txt かな。MySQL 4.1, 5.0, 5.1, 5.5, 5.6, and 5.7 で使えるみたいなことが載ってたり。
[t] 2015-02-27 21:17:05
|
mysql-connector-java-5.1.34-bin.jar を導入してみたけど、特に問題は出ていないっぽい。
[t] 2015-02-27 21:29:30
|
my.cnf で utf8 を指定している箇所を utf8mb4 に変更して、MySQL を再起動。
[t] 2015-02-27 21:35:21
|
MySQL monitor に入って、
mysql> show variables like '%character_set%';
ってやってみたら、
character_set_database がまだ utf8 になってる。
[t] 2015-02-27 21:41:43
|
データベースの 文字コードを utf8mb4 に変更。
mysql> alter database foobardb default character set utf8mb4;
character_set_database が utf8mb4 になった。
[t] 2015-02-27 21:44:26
|
character_set_system も utf8 のままだけど、これはこれで良さそう。
[t] 2015-02-27 21:46:38
|
"the character_set_system system variable to the name of the metadata character set"
MySQL 5.5 Reference Manual http://dev.mysql.com/doc/refman/5.5/en/charset-metadata.html
[t] 2015-02-27 21:47:34
|
テーブルの文字コードを調べてみたら、
mysql> show create table foobartbl;
テーブルはまだ utf8 だった。
ENGINE=InnoDB DEFAULT CHARSET=utf8
[t] 2015-02-27 21:49:52
|
テーブルの文字コードを変更。
mysql> alter table foobartbl default character set utf8mb4; Query OK, 160325 rows affected (13.11 sec)
[t] 2015-02-27 21:52:46
|
mysql> show create table foobartbl;
したら、
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
おー、テーブルの文字コードが utf8mb4 になった。
[t] 2015-02-27 21:55:03
|
でも、カラムの情報に
`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
|
"使用できるフィールド長は以下になります。 UTF8の場合・・・・767 ÷ 3 =255byte UTF8MB4の場合・・767 ÷ 4 =191byte"
MySQLのPK・UNIQUEのフィールド長制限に立ち向かう http://treeapps.hatenablog.com/entry/20110508/p2
[t] 2015-02-27 22:29:11
|
@_HANGEDMAN_ ありがとうございます。最初の何文字かをインデックスするように指定するんですね。
[t] 2015-02-27 22:36:51
|
「col_name(length) 構文を利用して、カラム値の最初に部分だけを利用するインデックスを作成」
長い文字列が格納されるカラムに対してINDEXを張る場合には、プリフィックス長を指定してみる - Enjoy*Study http://blog.enjoyxstudy.com/entry/20110430/p1
[t] 2015-02-27 22:37:38
|
デカいテーブルだからなのか処理がぜんぜん終わらない。。
[t] 2015-02-27 22:50:37
|
もうひとつ MySQL monitor を起動して、他の作業を。
[t] 2015-02-27 23:02:00
|
とりあえず、インデックス長の制限にひっかからない text カラムだけを utf8mb4 化。
mysql> alter table テーブル名 modify column カラム名 text character set utf8mb4;
[t] 2015-02-27 23:03:25
|
[話題急上昇中ワード] 1. 魔法にかけられて 2. 岡田 3. 白金 4. 永遠の0 5. 日本アカデミー賞 6. ウロボロス 7. 黒沢 8. mステ 9. 池松 10. 椎名林檎 http://searchranking.yahoo.co.jp/realtime_buzz/ #buzzbot
[t] 2015-02-27 23:05:05
|
必要なところは utf8mb4 化できた。問題なく動作してるように見える。
[t] 2015-02-27 23:05:31
|
@Dominion525 いまの時点では検証できないのでこわくて、最低限必要なカラムだけ utf8mb4 化して逃げています(;´Д`)
[t] 2015-02-27 23:12:57
|
mysql> show processlist; mysql> kill <Idを指定>;
MySQLで実行中のSQLをキャンセルする | dTblog http://www.deftrash.com/blog/archives/2009/04/mysql_kill.html
[t] 2015-02-27 23:13:45
|
MySQL monitor を別に起動して、
mysql> show processlist;
で調べてみたら、該当の処理の State が copy to tmp table だったので、さっくり
mysql> kill 2908;
(2908がIdだった)で強制終了。
[t] 2015-02-27 23:15:55
|
kill したら、ぜんぜん処理が終わらないほうの MySQL monitor が
"ERROR 2013 (HY000): Lost connection to MySQL server during query"
って、終了してくれた( ´∀`)
[t] 2015-02-27 23:16:53
|
これでなんとか復活。
[t] 2015-02-27 23:18:49
|