标题和客户端库次要版本不匹配
在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议通过修复它
- 切换到在PHP中使用mysqlnd驱动程序(推荐解决scheme)。
-
以较低的错误报告级别运行:
$err_level = error_reporting(0); $conn = mysql_connect('params'); error_reporting($err_level);
- 使用MariaDB客户端库重新编译PHP。
- 在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版本…
例如。 目前的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驱动程序。
在更新到最新版本的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
之前加@
。
- 在Python中,如何捕获警告,就像它们是exception?
- Visual Studio警告级别的含义?
- iPhone操作系统内存警告。 不同级别的含义是什么?
- 警告:不安全的可写dir / usr / local / bin在PATH,模式040777中
- 我打电话给session_start()时如何解决Permission错误?
- 类是一个原始types。 genericstypes<T>的引用应该被参数化
- 警告:不鼓励在分离的视图控制器上呈现视图控制器
- “发送const NSString *'到'NSString *'types的参数会丢弃qualifiers”警告
- Android Studio警告:使用不兼容的插件进行注释处理