環境
MySQLに接続できない
PHPからPDO経由でMySQLへ接続しようとしてもうまくいかない。
PDOException: SQLSTATE[HY000] [102] Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/) in ****
utf8のDBには正しく接続されるので文字コードが問題っぽいところまではわかったが、そのサーバーからMySQLのコマンド経由だと普通にログインもできるし表示でもできる。むむむ
解決策
どうやらPHPからMySQLに接続するライブラリを変えなきゃいけないらしく、MySQL Native Driverってやつに変えたらいけた
まずは既存のライブラリをアンインストール
yum remove php71w-mysql
MySQL Native Driverのライブラリをインストール
yum install php71w-mysqlnd
でservice php-fpm restart
してphp -m
にいればおk
違いは?
今まではlibmysqlclient(MySQL クライアントサーバーライブラリ)が主流だったが、実はPHP 5.3以降はmysqlnd(MySQL ネイティブドライバ)も組み込まれており、今はmysqlndのほうがオススメっぽい。まぁ今時utf8mb4ですし
詳細な比較は公式ドキュメントを参照
http://php.net/manual/ja/mysqlinfo.library.choosing.phpphp.net