2012年7月12日

[mysql 15800] Re: PHPとutf8mb4

後藤です。

> 今回のDBは5.5.24であり、mysqlクライアントからは何の問題もないため
> やはりPHP側の問題ではと思っております。
> (ただし、/usr/share/mysql/charsets/のファイルはMySQL側のRPMに含まれているようですが)

mysql コマンドと PHP の mysqli 拡張モジュールが同じライブラリとリンクしているとは限りません。
そして、mysqli->set_charset() は、libmysql に charset を伝えるものなので、

libmysql が古ければ新しい charset に失敗することも(多分)あります。
(実際そのような状態に出くわしたことは無いですが・・・)

rpm -qa | grep -i mysql

で MySQL 関連のパッケージを表示すると古いバージョンの何かが入っていないでしょうか?


> 上記の$mysqli->optionsによる方法でmy.cnfを読むようにして、
> my.cnfに以下のように指定した場合も$mysqli->set_charset('utf8mb4');の時と
> 同じエラーとなってしまいました。

my.cnf を読ますのは "utf8mb4" でエラーが出る件の解決方法ではありません。
my.cnf を読ますのも set_charset で直接指定するのもやっていることは対して変わりません。


> 上記で「default-character-set = utf8」とすればエラーはでなくなりますが、前回同様
> 4バイトUTF-8文字が4つの?になってしまいます。
> やはりskip-character-set-client-handshakeにしてlatin1のままで接続しかないのでしょうか。

PHP 自体をソースからビルドするか、mysqli 拡張モジュールだけでも
ソースからビルドすれば解決するかもしれません。


以上です。


投稿者 xml-rpc : 2012年7月12日 17:47
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/111256
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。