"-t -vvv" のオプションを付ければ良い
※ http://d.hatena.ne.jp/secondlife/20051031/1130724806 よりコピー
http://www.mysql.gr.jp/mysqlml/mysql/msg/9530 で話題になっていたように、 ver. 4.1以降、クライアント/サーバー間でキャラクターセットが自動的に 変換されるようになったことに伴い、多くの方が文字化けといった問題に 悩まされていたかと思います。
この点については開発側に改善を要求してきましたが、4.1.15にて "--skip-character-set-client-handshake" というオプションが導入されました。 http://dev.mysql.com/doc/refman/4.1/en/news-4-1-15.html このオプションを指定することにより、クライアントのキャラクターセットが サーバー側のキャラクターセットに合わせて自動的に設定され、 自動変換が発生しないようになります。特にver. 4.0から移行する際に、 このオプションの利用を徹底すれば、多くのトラブルが回避できるのでは ないでしょうか。
http://www.mysql.gr.jp/mysqlml/mysql/msg/12307
[mysqld] default-character-set = utf8 init-connect="SET NAMES utf8"
[mysqldump] default-character-set = utf8
[mysql] default-character-set = utf8
init-connect はなかなか優秀なオプション。DBI やら PHP やら latin1 でビルドされてるバイナリがたくさんあって手に負えないのは周知の通りだけど、このオプションを付けておくと、クライアントが何であっても接続時に “SET NAMES utf8″ を勝手に実行してくれる。
これをやってもPHPアプリで文字化けする場合は、php.iniを以下のように変更
mbstring.internal_encoding = UTF-8 mbstring.http_output = UTF-8
DD | ALL | ALTER | ANALYZE | AND | AS |
ASC | BEFORE | BETWEEN | BIGINT | BINARY | BLOB |
BOTH | BY | CASCADE | CASE | CHANGE | CHAR |
CHARACTER | CHECK | COLLATE | COLUMN | COLUMNS | CONSTRAINT |
CONVERT | CREATE | CROSS | CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP |
CURRENT_USER | DATABASE | DATABASES | DAY_HOUR | DAY_MICROSECOND | DAY_MINUTE |
DAY_SECOND | DEC | DECIMAL | DEFAULT | DELAYED | DELETE |
DESC | DESCRIBE | DISTINCT | DISTINCTROW | DIV | DOUBLE |
DROP | DUAL | ELSE | ENCLOSED | ESCAPED | EXISTS |
EXPLAIN | FALSE | FIELDS | FLOAT | FLOAT4 | FLOAT8 |
FOR | FORCE | FOREIGN | FROM | FULLTEXT | GRANT |
GROUP | HAVING | HIGH_PRIORITY | HOUR_MICROSECOND | HOUR_MINUTE | HOUR_SECOND |
IF | IGNORE | IN | INDEX | INFILE | INNER |
INSERT | INT | INT1 | INT2 | INT3 | INT4 |
INT8 | INTEGER | INTERVAL | INTO | IS | JOIN |
KEY | KEYS | KILL | LEADING | LEFT | LIKE |
LIMIT | LINES | LOAD | LOCALTIME | LOCALTIMESTAMP | LOCK |
LONG | LONGBLOB | LONGTEXT | LOW_PRIORITY | MATCH | MEDIUMBLOB |
MEDIUMINT | MEDIUMTEXT | MIDDLEINT | MINUTE_MICROSECOND | MINUTE_SECOND | MOD |
NATURAL | NOT | NO_WRITE_TO_BINLOG | NULL | NUMERIC | ON |
OPTIMIZE | OPTION | OPTIONALLY | OR | ORDER | OUTER |
OUTFILE | PRECISION | PRIMARY | PRIVILEGES | PROCEDURE | PURGE |
RAID0 | READ | REAL | REFERENCES | REGEXP | RENAME |
REPLACE | REQUIRE | RESTRICT | REVOKE | RIGHT | RLIKE |
SECOND_MICROSECOND | SELECT | SEPARATOR | SET | SHOW | SMALLINT |
SONAME | SPATIAL | SQL_BIG_RESULT | SQL_CALC_FOUND_ROWS | SQL_SMALL_RESULT | SSL |
STARTING | STRAIGHT_JOIN | TABLE | TABLES | TERMINATED | THEN |
TINYBLOB | TINYINT | TINYTEXT | TO | TRAILING | TRUE |
UNION | UNIQUE | UNLOCK | UNSIGNED | UPDATE | USAGE |
USE | USING | UTC_DATE | UTC_TIME | UTC_TIMESTAMP | VALUES |
VARBINARY | VARCHAR | VARCHARACTER | VARYING | WHEN | WHERE |
WITH | WRITE | X509 | XOR | YEAR_MONTH | ZEROFILL |
以下はMySQLでは使えるが、SQL-99 では使用を禁止されているので使わない方が良い。
ACTION | BIT | DATE | ENUM | NO | TEXT | TIME | TIMESTAMP |
show create database [データベース名]
これは 4.1 以降で使えるらしい。
mysqlコマンドを--auto-rehashオプションをつけて起動する
$ mysql --auto-rehash
select * form a"
までうって Tabを押すと
select * from account_mst
見たいに補完してくれます。
t1(c1, c2),idx_c1, idx_c2 select * from t1 where c1 = 'a' order by c2;
の場合、複合作って以下が早い。 select * from t1 where c1 = 'a' order by c1,c2;
MySQL、PHPの日本語関係のツール・パッチがある
日本語の取扱等の情報が豊富