우선, mysqli :: $ client_version은 PHP가 MySQL 서버의 버전 번호가 아닌 MySQL과 통신 할 때 사용되는 클라이언트 라이브러리의 버전을 반환한다는 것이 분명해야합니다. 이것은 많은 개발자들이 실수로 MySQL 서버에 해당하는 버전을 반환한다고 믿는 일반적인 오해입니다.
클라이언트 버전은 PHP가 설치 될 때 사용되는 MySQL 클라이언트 라이브러리 (예 : LibMySqlClient 또는 MySQLND) 버전을 나타냅니다.
서버 버전은 MySQL 서버를 실행하는 버전을 나타냅니다.
MySQL 서버의 버전을 업데이트하지만 PHP에서 사용하는 MySQL 클라이언트 라이브러리가 변경되지 않은 경우 MySQLI :: $ Client_Version 에서 반환 한 버전 번호는 자연스럽게 변경되지 않습니다.
이 문제의 근본 원인은 PHP와 MySQL이 두 개의 별도 구성 요소이며 PHP (예 : MySQLND 또는 LibMySqlClient)가 사용하는 클라이언트 라이브러리가 MySQL 서버의 버전이 변경되면 자동으로 업데이트되지 않기 때문입니다. 다시 말해, MySQL 서버가 업데이트 되더라도 PHP는 설치되었을 때 클라이언트 라이브러리 버전을 사용합니다.
버전 8.0에서 MySQL 서버가 실행 중이지만 PHP는 MySQLND 5.0을 사용한다고 가정합니다. MySQL 서버를 업그레이드하더라도 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 서버 버전과 호환되는 클라이언트 라이브러리를 연결하십시오.
Recompile PHP : PHP 설치에 최신 버전의 MySQL 클라이언트 라이브러리가 포함되어 있지 않으면 PHP를 재 컴파일하고 해당 버전의 클라이언트 라이브러리를 활성화 할 수 있습니다. 특정 단계는 공식 PHP 문서를 참조하여 컴파일 타임에 올바른 MySQL 클라이언트 버전에 링크하는지 확인하십시오.
MySQLND 사용 : MySQL Native Driver (MySQLND)를 PHP에서 MySQL과 상호 작용하는 주요 방법으로 사용하는 것이 좋습니다. MySQLND에는 우수한 성능이있을뿐만 아니라 더 많은 MySQL 기능을 지원하며 PHP 업데이트로 자동 최적화됩니다. PHP에 MySQLND Extension이 설치되어 있는지 확인하고 기본 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