DB

Debian

mysql

etch=oldstableでphp5はdotdebから5.2.9を使っているときのこと。

sudo aptitude install mysql-server-5.0=5.0.32.7etch8

すると

Stopping MySQL database server: mysqld.
* /etc/init.d/mysql: ERROR: Using expire_logs_days without log_bin crashes the server. See README.Debian.gz

で起動しない。 調べると、my.cnfでの設定ミスらしい。ミスってかbugらしいけどbyREADME.Debian.gz

my.cnfでlog_binをコメントアウトをはずして、/etc/init.d/mysql startすると動く。

Apache2

PHP5

Windows

Apache2

PHP5

上記の条件で出力されるデータが文字化けする。

mysql> status;
--------------
mysql  Ver 14.12 Distrib 5.0.67, for Win32 (ia32) 

Connection id:          9
Current database:
Current user:           hoge@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.0.67-community-nt MySQL Community Edition (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 1 min 54 sec 

Threads: 1  Questions: 103  Slow queries: 0  Opens: 33  Flush tables: 1  Open  tables: 27  Queries per second avg: 0.904

で文字化けするデータベースは

mysql> show variables like 'char%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | utf8                                                    |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8                                                    |
| character_set_server     | utf8                                                    |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+

php.iniはこんな感じ。

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = UTF-8
;mbstring.encoding_translation = Off
;mbstring.detect_order = auto
;mbstring.substitute_character = none;
;mbstring.func_overload = 0

なので、mysqlのmysql.iniで設定をすると文字化けが直る

[mysqld]
skip-character-set-client-handshake

を追加してnet stop mysql/net start mysqlすると文字化けが直る。


Last-modified: 2012-03-12 (月) 17:05:31 (166d)