标题和客户端库次要版本不匹配

在PHP中,每当我尝试连接到数据库(通过mysql_connect )时,我都会收到以下警告:

警告:mysql_connect():标题和客户端库次要版本不匹配。 标题:50162图书馆:50524

在我的php -i输出中,我在mysqli下列出了以下值

客户端API库版本=> 5.5.24

客户端API头版本=> 5.1.62

我试过更新php5-mysql php,但我已经在他们的最新版本。 我如何去更新标题版本,所以我不再看到这个警告?

编辑

我的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 

你的PHP是用MySQL 5.1编译的,但现在它连接了一个5.5.X系列的mysql库。 您必须将PHP升级到使用MySQL 5.5编译的版本,或将MySQL客户端库恢复到5.1.x.

我使用MariaDB并有类似的问题。

从MariaDB网站 ,build议通过修复它

  1. 切换到在PHP中使用mysqlnd驱动程序(推荐解决scheme)。
  2. 以较低的错误报告级别运行:

     $err_level = error_reporting(0); $conn = mysql_connect('params'); error_reporting($err_level); 
  3. 使用MariaDB客户端库重新编译PHP。
  4. 在MariaDB中使用原始的MySQL客户端库。

在Ubuntu中使用mysqlnd驱动程序修复了我的问题:

 sudo apt-get install php5-mysqlnd 

干杯!


[更新:额外的信息]安装此驱动程序还解决PDO问题,哪个整数值作为string返回。 为了保持整数,在安装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 

我读过这个线程,试图findMySQL的解决scheme,我也看到了Ken的答案,但我忽略了MariaDB的解决scheme,浪费了几个小时。 我不清楚MySQL也是如此。 这篇文章只是为了让你省下我迷路的几个小时。

这个错误的根本原因是PHP早就将自己从MySQL客户端库中分离出来了。 所以发生了什么事情(主要是在linux的旧编译器上)是人们会根据给定的MySQL客户端版本(意思是所安装的MySQL版本是不相关的)编译PHP而不是升级(在CentOS中这个包列为mysqlclientXX ,其中XX代表包裹号码)。 这也使软件包维护人员能够支持较低版本的MySQL。 这是一个混乱的方式来做到这一点,但它是唯一的方式给PHP和MySQL如何使用不同的授权。

MySQLND通过使用PHP自己的本地驱动程序(ND)解决了这个问题,它不再依赖于MySQL客户端。 它也编译为您正在使用的PHP版本。 这是一个更好的解决scheme,如果没有其他的原因MySQLND被用来与MySQL对话。

如果你不能安装MySQLND,你可以放心地忽略这个错误。 这仅仅是一个预告通知,而不是任何事情。 这听起来很可怕。

用MySQL本地驱动程序(mysqlnd)从源代码编译php,

 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本地驱动程序。

我有我的WordPress的网站相同的PHP交战…

错误:警告:mysql_connect():标题和客户端库次要版本不匹配。 标题:50547图书馆:50628在/home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php 1515行

原因:我更新了wp 4.2到4.5版本(PHP和MySql不匹配)

我在1515行更改了wp-db.php

 $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或域名虚拟主机域名…

在cPanel,转到“软件和服务”选项卡,>>然后单击“selectPHP版本”>>设​​置您所需的PHP版本…

警告:mysql_connect():标题和客户端库次要版本不匹配。标题:50547图书馆:50628在chennaitechnologies.com

例如。 目前的PHP版本:

PHP版本[5.2](5.2,5.3,5.4,5.5,5.6可用PHP版本列表)

警告:更改PHP模块和PHP选项通过PHPselect器为原生的PHP版本是不可能的

我select了5.6的PHP版本,之后,在我的WordPress博客网站上清除错误…

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

我通过重build我的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对于某些应用程序是必需的,所以我编写了一个脚本来重build驱动程序。

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

在更新到最新版本的WordPress后,我收到了这条消息。 只需致电您的托pipe公司,他们将更新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之前加@