Несоответствие заголовков и незначительной версии клиентской библиотеки


в PHP я получаю следующее предупреждение, когда я пытаюсь подключиться к базе данных (через mysql_connect)

предупреждение: mysql_connect (): несоответствие заголовков и клиентской библиотеки незначительной версии. Заголовки: 50162 Библиотека: 50524

в своем php -i вывод у меня есть следующие значения, перечисленные в mysqli

версия библиотеки API клиента = > 5.5.24

версия заголовка API клиента = > 5.1.62

Я пробовал обновление php5-mysql и php но я уже на последней версии обоих из них. Как мне обновить версию заголовка, чтобы я перестал видеть это предупреждение?

EDIT

Мои файлы MySQL должны быть обновлены до последней версии:

$ 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.

удаление старых версий

$ 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
13 75

13 ответов:

ваш PHP был скомпилирован с MySQL 5.1, но теперь он связывает библиотеку mysql 5.5.Семья х. Вы должны обновить PHP до версии, скомпилированной с MySQL 5.5 или вернуть клиентские библиотеки mysql в 5.1.x.

Я использую MariaDB и имеют аналогичную проблему.

С сайт MariaDB рекомендуется исправить это

  1. переключитесь на использование драйвера mysqlnd в PHP (рекомендуемое решение).
  2. запуск с более низким уровнем отчетов об ошибках:

    $err_level = error_reporting(0);  
    $conn = mysql_connect('params');  
    error_reporting($err_level); 
    
  3. Перекомпилируйте PHP с клиентскими библиотеками MariaDB.
  4. используйте исходную клиентскую библиотеку MySQL с MariaDB.

мой проблема исправлена с помощью драйвера mysqlnd в Ubuntu:

sudo apt-get install php5-mysqlnd

Ура!


[обновление: дополнительная информация] установка этого драйвера также решает проблему PDO, которая возвращает целочисленное значение в виде строки. Чтобы сохранить тип как целое число, после установки mysqlInd, сделайте это

$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);

для нового семейства MySQL 5.6 вам нужно установить php5-mysqlnd, а не php5-mysql.

удалите эту версию драйвера mysql

sudo apt-get remove php5-mysql

и установить это вместо

sudo apt-get install php5-mysqlnd

то же самое работает для MySQL:

sudo apt-get install php5-mysqlnd

Я прочитал этот поток, пытаясь найти решение для MySQL, и я также видел ответ Кена, но я проигнорировал решение для MariaDB, потратив несколько часов таким образом. Мне не было ясно, что то же самое может относиться к MySQL. Этот пост просто, чтобы избавить вас от нескольких часов я потерял.

основная причина этой ошибки заключается в том, что PHP отделился от клиентских библиотек MySQL некоторое время назад. Итак, что происходит (в основном на старых компиляторах linux), так это то, что люди будут компилировать PHP против данная сборка клиента MySQL (что означает, что установленная версия MySQL не имеет значения), а не обновление (в CentOS этот пакет указан как mysqlclientXX, где XX обозначает номер пакета). Это также позволяет сопровождающему пакета поддерживать более низкие версии MySQL. Это грязный способ сделать это, но это был единственный способ, учитывая, как PHP и MySQL используют разные лицензии.

MySQLND решает проблему с помощью собственного собственного драйвера PHP (ND), который больше не зависит от клиента MySQL. Он также скомпилирован для версии PHP, которую вы используете. Это лучшее решение во всем, если по какой-либо другой причине MySQLND сделан так, чтобы PHP разговаривал с MySQL.

Если вы не можете установить MySQLND вы можете на самом деле безопасно игнорировать это ошибка по большей части. Это просто больше FYI уведомление, чем что-либо. Это просто звучит страшно.

для компиляции php из исходного кода с помощью MySQL native driver (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

С /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

С помощью этих параметров можно включить одно или несколько расширений PHP MySQL.
Если значение не передается в эти параметры, или если значение mysqlnd, будет использоваться собственный драйвер MySQL.

Я получил тот же php воюет в моем wordpress сайте...

Err: предупреждение: mysql_connect (): несоответствие заголовков и клиентской библиотеки незначительной версии. Заголовки: 50547 библиотека:50628 in /home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php на линии 1515

причина: я обновил wp 4.2 до версии 4.5 (несоответствие PHP и MySql )

Я изменил wp-db.php on line 1515

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

до

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 );
}

его получил без воюющая ошибка на моем сайте wordpress

Если бы у вас был доступ к cpanel или whm для веб-хостинга домена ...

в cPanel перейдите на вкладку" программное обеспечение и услуги", > > и нажмите кнопку" выбрать версию PHP " > > установите нужную версию php...

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

например. Текущая версия PHP:

версия PHP [5.2] (список доступных версий php 5.2, 5.3, 5.4, 5.5, 5.6)

предупреждение: изменение модулей php и параметров php через селектор PHP для родной версии php невозможно

Я выбрал версию php 5.6, после чего ошибка была удалена на моем блоге wordpress...

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

Я решил вышеуказанную ошибку, просто перестроив мой Apache:

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

У меня есть эти проблемы при использовании Percona/MySQL 5.6 и драйвер php был скомпилирован с 5.5 и php5-mysql требуется для некоторых приложений, поэтому я пишу скрипт для восстановления драйверов.

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

для WHM и cPanel некоторые версии должны явно установить mysqli для сборки.

используя WHM, под CENTOS 6.9 xen pv [dc] v68.0.27, нужно было перестроить Apache/PHP, просмотрев все параметры и выбрав mysqli для сборки. По умолчанию было построить устаревший mysql. Теперь сообщения об амортизации исчезли, и один готов к будущим обновлениям MySQL.

Я получил это сообщение после обновления до последней версии WordPress. Просто позвоните в свою хостинг-компанию, и они обновят версию PHP. Вопрос будет решен в течение нескольких минут.

кажется, у меня была такая же проблема, и это, похоже, проблема с сервером. Все, что я сделал, это пошел в your-wordpress-folder/wp-includes/wp-db.php ищите mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags ); линия. Мой был на line 1489 меняем на

@mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );

то есть просто добавить @ перед mysqli.