まず第一に、 mysqli :: $ client_versionが、 phpがmysqlサーバーのバージョン番号ではなく、mysqlと通信するときに使用されるクライアントライブラリのバージョンを返すことは明らかです。これは、多くの開発者がMySQLサーバーに対応するバージョンを返すと誤って信じているという一般的な誤解です。
クライアントバージョンは、 PHPがインストールされているときに使用されるMySQLクライアントライブラリ(libmysqlclientまたはmysqlndなど)のバージョンを指します。
サーバーバージョンは、 MySQLサーバーを実行しているバージョンを指します。
MySQL Serverのバージョンを更新しますが、PHPが使用するMySQLクライアントライブラリが変更されていない場合、 MySQLI :: $ Client_versionによって返されるバージョン番号は当然変更されません。
この問題の根本的な原因は、PHPとMySQLが2つの個別のコンポーネントであり、PHPで使用されるクライアントライブラリ(mysqlndやlibmysqlclientなど)がMySQLサーバーのバージョンが変更されると自動的に更新されないことです。言い換えれば、たとえMySQLサーバーが更新されたとしても、PHPはインストール時にクライアントライブラリバージョンを使用します。
バージョン8.0で実行されているMySQLサーバーがあると仮定しますが、PHPはMySQLND 5.0を使用しています。 MySQL Serverをアップグレードしたとしても、 MySQLI :: $ client_versionによって返されるバージョンはまだmysqlnd 5.0であり、MySQL 8.0に自動的に更新されません。
PHPがMySQLクライアントライブラリの最新バージョンを使用していることを確認するには、PHPでMySQLクライアントライブラリを手動で更新する必要がある場合があります。特定の方法は次のとおりです。
PHP拡張機能の更新:最初に使用しているMySQLI拡張機能がMySQLのバージョンと互換性があることを確認してください。 PHP構成ファイル(PHP.INI)の関連する拡張設定をチェックすることにより、MySqlndまたはlibmysqlclientの最新バージョンが有効になることを確認できます。
MySqlndが使用される状況では、PHP構成ファイルでMySQLND拡張子が有効になっているかどうかを直接確認できます。
libmysqlclientを使用するために、PHPコンパイルタイムがMySQL Serverバージョンと互換性のあるクライアントライブラリをリンクしていることを確認してください。
PHPの再コンパイル:PHPのインストールにMySQLクライアントライブラリの最新バージョンが含まれていない場合は、PHPの再コンパイルと、対応するバージョンのクライアントライブラリを有効にすることを検討できます。特定の手順については、公式のPHPドキュメントを参照して、コンパイル時にMySQLクライアントの正しいバージョンにリンクすることを確認してください。
MySQLNDの使用:PHPでMySQLと対話する主な方法としてMySQLネイティブドライバー(MySQLND)を使用することをお勧めします。 MySQLNDは優れたパフォーマンスを備えているだけでなく、より多くのMySQL関数をサポートし、PHPの更新で自動的に最適化されます。 PHPにMySQLND拡張機能がインストールされていることを確認し、デフォルトのMySQLクライアントライブラリとして使用してください。
mysqli :: $ client_versionはクライアントライブラリのバージョン番号のみを返しますが、サーバーバージョンとクライアントバージョンの関係を理解することは依然として非常に重要です。通常、MySQLクライアントライブラリは、サーバーバージョンと互換性のある機能と機能をサポートする必要があります。具体的には:
後方互換性:MySQLクライアントライブラリは通常、後方互換です。つまり、クライアントライブラリバージョンが低い場合でも、MySQLサーバーの新しいバージョンと通信できます。しかし、それはサーバーの新しいバージョンのすべての機能を使用できるという意味ではありません。
順方向の互換性:古いクライアントライブラリ(PHPにインストールされているLibmysQlClientの以前のバージョンなど)を使用している場合、MySQLサーバーの新機能はサポートされない場合があります。この場合、クライアントライブラリのアップグレードまたはMySqlndの使用は解決策です。
クライアントライブラリのバージョンではなく、MySQLサーバーのバージョン番号を確認する場合は、次のSQLステートメントを使用できます。
<span><span><span class="hljs-keyword">SELECT</span></span><span> VERSION();
</span></span>これにより、現在のMySQLサーバーのバージョン番号が返され、 MySQLI :: $ Client_versionによって返されたクライアントバージョン番号と区別できます。
mysqli :: $ client_version mysqlサーバーのバージョンではなく、mysqlと通信するときにPHPが使用するクライアントライブラリバージョンを返します。 mysqli :: $ client_versionが常に同じバージョン番号を返すことがわかった場合、PHPで使用されているMySQLクライアントライブラリバージョンが更新されていないためかもしれません。この問題の解決策には、PHPのMySQLクライアントライブラリの更新、MySQLNDの使用、またはPHPの再コンパイルを使用して最新のクライアントライブラリが使用されるようにすることが含まれます。
開発プロセス中に、クライアントバージョンとサーバーバージョンの違いを理解することは、関連する問題を回避し、データベース操作を最適化するために非常に重要です。
関連タグ:
mysqli