BLOG
ブログ
  • TOP
  • BLOG
  • PHP+MySQLでDBに繋がらなかったお話

PHP+MySQLでDBに繋がらなかったお話

PHP+MySQLでDBに繋がらなかったお話

CONTENT

皆さんこんにちは。
おっさんエンジニアです。

最近PHP+MySQLを利用したシステムで起きた問題について少々書きたいと思います。


ちょっと古めのPHP+MySQLで動いているシステムで、新しく動いているシステム側に一部のデータを移行したいというお話がありました。データ自体を取捨選択して移行するということもありPHPでコードを組んで、旧DBのテーブルから新DBのテーブルに取捨選択したデータを移行することにしたんですが…。

コードも出来上がり、いざ動かしてみると…新DBに接続できない…何故???


エラーが発生しているようで、内容が
「Warning: PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers in ...」

何ですかこれ?
charsetが認識出来ない?…ん?UTF8が認識できないってこと?
というエラーが発生しました。


よくわからんのでグー〇ルさんに聞いてみると、どうやらバージョンに問題があるようで、どうもMySQL 8.x系から何やらdefault charsetと認証方式が変わっている様子。
これが原因で接続出来ていなかったようです。


但し、これが起きるのは古いバージョンのPHPから新しいバージョンのMySQLに接続することで発生する問題で、今回は古めのシステムはPHP5.6系+MySQL5.7系、新DBはMySQL8系だったのでPHP5.6系からMySQL8系へのアクセスで問題が生じたようでした。


結局、解決策としてはPHPのバージョンを上げるか、MySQL8系の設定をPHP5.6系でも動くように変更するかでした。
(MySQL8系のcharset等を変更すると一応、動かせそう…)


新DBには既に結構なデータが入っていたので、変更することも出来ないことからPHPのバージョンを上げることで解決しました。新しいものと古いものを組み合わせるとこういうことも起きるんだなーとしみじみ感じた次第です。

やはりバージョンはキッチリ上げて利用しないとダメということですね。


それではまた何れ...。