Pregunta Los encabezados y la versión secundaria de la biblioteca cliente no coinciden


En PHP recibo la siguiente advertencia cada vez que trato de conectarme a una base de datos (a través de mysql_connect)

Advertencia: mysql_connect (): los encabezados y la versión secundaria de la biblioteca cliente no coinciden. Encabezados: 50162 Biblioteca: 50524

En mi php -i salida Tengo los siguientes valores enumerados en mysqli

Versión de biblioteca de API de cliente => 5.5.24

Client header header version => 5.1.62

Intenté actualizar php5-mysql y php, pero ya estoy en la última versión de ambos. ¿Cómo hago para actualizar la versión del encabezado y dejo de ver esta advertencia?

EDITAR

Mis archivos MySQL deberían actualizarse para ser la última versión:

$ apt-get install mysql.*5.5
. . .
mysql-client-5.5 is already the newest version.
mysql-server-core-5.5 is already the newest version.
mysql-server-5.5 is already the newest version.
mysql-testsuite-5.5 is already the newest version.
mysql-source-5.5 is already the newest version.

Eliminando versiones antiguas

$ apt-get remove mysql.*5.1
. . .
Package handlersocket-mysql-5.1 is not installed, so not removed
Package mysql-cluster-client-5.1 is not installed, so not removed
Package mysql-cluster-server-5.1 is not installed, so not removed
Package mysql-client-5.1 is not installed, so not removed
Package mysql-client-core-5.1 is not installed, so not removed
Package mysql-server-5.1 is not installed, so not removed
Package mysql-server-core-5.1 is not installed, so not removed
Package mysql-source-5.1 is not installed, so not removed

75
2018-05-25 18:06


origen


Respuestas:


Su PHP fue compilado con MySQL 5.1 pero ahora está enlazando una biblioteca mysql de la familia 5.5.X. Debe actualizar PHP a una versión compilada con MySQL 5.5 o revertir las bibliotecas de cliente de mysql a 5.1.x.


30
2018-05-26 18:29



Estoy usando MariaDB y tengo el problema similar.

De Sitio MariaDB, se recomienda solucionarlo

  1. Cambie al uso del controlador mysqlnd en PHP (solución recomendada).
  2. Ejecutar con un nivel inferior de informe de errores:

    $err_level = error_reporting(0);  
    $conn = mysql_connect('params');  
    error_reporting($err_level); 
    
  3. Recompile PHP con las bibliotecas del cliente MariaDB.
  4. Use su biblioteca de cliente MySQL original con MariaDB.

Mi problema se solucionó al usar el controlador mysqlnd en Ubuntu:

sudo apt-get install php5-mysqlnd

¡Aclamaciones!


[actualización: información adicional] La instalación de este controlador también resuelve el problema de PDO que devuelve el valor entero como una cadena. Para mantener el tipo como entero, después de instalar mysqlInd, haga esto

$db = new PDO('mysql:host='.$host.';dbname='.$db_name, $user, $pass, 
          array( PDO::ATTR_PERSISTENT => true));
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);

119
2018-03-17 12:16



Para la nueva familia MySQL 5.6 necesita instalar php5-mysqlnd, no php5-mysql.

Eliminar esta versión del controlador mysql

sudo apt-get remove php5-mysql

E instala esto en cambio

sudo apt-get install php5-mysqlnd

63
2017-08-11 15:51



Lo mismo funciona para MySQL:

sudo apt-get install php5-mysqlnd

He leído este hilo tratando de encontrar la solución para MySQL, y también he visto la respuesta de Ken, pero ignoré la solución para MariaDB, desperdiciando unas horas de esa manera. No estaba claro para mí que lo mismo podría aplicarse a MySQL. Esta publicación es solo para ahorrarle las pocas horas que perdí.


22
2018-04-24 14:40



El motivo principal de este error es que PHP se separó de las bibliotecas de MySQL Client hace algún tiempo. Entonces, lo que está sucediendo (principalmente en compilaciones antiguas de Linux) es que las personas compilarán PHP contra una compilación dada del cliente MySQL (lo que significa que la versión de MySQL instalada es irrelevante) y no la actualización (en CentOS este paquete aparece como mysqlclientXX, dónde XX representa el número de paquete). Esto también permite que el mantenedor de paquetes soporte versiones inferiores de MySQL. Es una manera desordenada de hacerlo, pero era la única forma en que PHP y MySQL usan diferentes licencias.

MySQLND resuelve el problema utilizando el propio controlador nativo de PHP (el ND), que ya no depende de MySQL Client. También está compilado para la versión de PHP que estás usando. Esta es una mejor solución, si no fuera por otra razón, que MySQLND está hecho para hablar PHP con MySQL.

Si no puede instalar MySQLND, puede ignorar este error en la mayoría de los casos. Es solo más que un aviso de FYI. Simplemente suena aterrador.


9
2018-05-21 02:08



Para compilar php desde la fuente con Controlador nativo de MySQL (mysqlnd),

cd /php/source/path
./configure <other-options> --with-mysql --with-mysqli --with-pdo-mysql
make clean    # required if there was a previous make, which could cause various errors during make
make
make install

De /php/source/path/configure --help.

--with-mysql=DIR        Include MySQL support.  DIR is the MySQL base
                      directory, if no DIR is passed or the value is
                      mysqlnd the MySQL native driver will be used
--with-mysqli=FILE      Include MySQLi support.  FILE is the path
                      to mysql_config.  If no value or mysqlnd is passed
                      as FILE, the MySQL native driver will be used
--with-pdo-mysql=DIR    PDO: MySQL support. DIR is the MySQL base directory
                      If no value or mysqlnd is passed as DIR, the
                      MySQL native driver will be used

Se pueden incluir una o más extensiones PHP MySQL utilizando estas opciones.
Si no se pasa un valor a estas opciones, o si el valor es mysqlnd, Se usará el controlador nativo de MySQL.


2
2017-08-26 12:26



Tengo el mismo php en conflicto en mi sitio de wordpress ...

Err: Advertencia: mysql_connect (): los encabezados y la versión secundaria de la biblioteca cliente no coinciden. Encabezados: 50547 Biblioteca: 50628 en /home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php en la línea 1515

Causa: Actualicé la versión de wp 4.2 a 4.5 (no coincide con PHP y MySql)

Cambié wp-db.php en la línea 1515

$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );

a

if ( WP_DEBUG ) {
    $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
} else {
    $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
}

Se consigue sin pelear err en mi sitio de wordpress


1
2018-04-12 20:27



Si tuviera acceso a cpanel o whm para el alojamiento web de dominio ...

En cPanel, ve a la pestaña "Softwares and services", >> y luego haz clic en "Select PHP Version" >> configura tu versión deseada de php ...

Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50628 in chennaitechnologies.com

P.ej. Versión actual de PHP:

Versión de PHP [5.2] (lista de 5.2, 5.3, 5.4, 5.5, 5.6 versiones de php disponibles)

Advertencia: Cambiar los módulos de php y las opciones de php a través de PHP Selector para la versión nativa de php es imposible

Seleccioné la versión de php 5.6, después de que se borrara ese error en mi sitio de blogs de WordPress ...


1
2018-04-18 21:02



Warning: mysqli::mysqli(): Headers and client library minor version mismatch.
Headers:50547 Library:100026

Resolví el error anterior simplemente reconstruyendo mi Apache:

cPanel Version  56.0 (build 25)
Apache Version  2.4.18
PHP Version 5.5.30
MySQL Version   10.0.26-MariaDB

1
2017-07-16 21:31



Tengo estos problemas cuando uso Percona / MySQL 5.6 y el controlador php fue compilado con 5.5 y php5-mysql es requerido para algunas aplicaciones, entonces escribo un script para reconstruir los controladores.

https://github.com/falcacibar/php5-mysql-rebuild


0
2018-01-07 15:19



Para WHM y cPanel, algunas versiones deben establecer explícitamente mysqli para compilar.

Usando WHM, bajo CENTOS 6.9 xen pv [dc] v68.0.27, se necesitaba reconstruir Apache / PHP mirando todas las opciones y seleccionando mysqli para compilar. El valor predeterminado era construir el mysql obsoleto. Ahora los mensajes de depreciación se han ido y uno está listo para futuras actualizaciones de MySQL.


0
2018-01-25 21:34