在Ubuntu 14.04 MariaDB 10.0.15下,运行包含mysql_connect()函数的PHP脚本提示以下Warning:

“mysql_connect(): Headers and client library minor version mismatch. Headers:50540 Library:100015”

Google了下,在stackoverflow发现只要卸载掉php5-mysql,安装php5-mysqlnd即可。

所谓mysqlnd,是指MySQL native driver,php.net上这样介绍mysqlnd:“MySQL Native Driver is a replacement for the MySQL Client Library (libmysqlclient)”

mysqlnd是一个用C写的、替换libmysqlclient的一个PHP扩展。mysqlnd之所以会出现其原因包括licence、性能等诸多方面:

A.libmysql驱动是由mysql AB公司(现在是oracle公司)编写, 并按mysql license许可协议发布,所以在PHP中默认是被禁用的.而mysqlnd是由php官方开发的驱动,以php license许可协议发布,故就规避了许可协议和版权的问题

B.因为mysqlnd内置于PHP源代码,故在编译安装php时就不需要预先安装mysql server也可以提供mysql client API (mysql_connect, pdo , mysqli), 这将减化一些工作量。

C. mysqlnd是专门为php优化编写的驱动,它使用了PHP本身的特性,在内存管理,性能上比libmysql更有优势. php官方的测试是:libmysql将每条记录在内存中保存了两份,而mysqlnd只保存了一份

D. 一些新的或增强的功能
增强的持久连接
引入特有的函数mysqli_fetch_all()

引入一些性能统计函数mysqli_get_cache_stats(), mysqli_get_client_stats(),
mysqli_get_connection_stats(),使用上述函数,可很容易分析mysql查询的性能瓶颈;SSL支持(从php 5.3.3开始有效) 压缩协议支持;命名管道支持(php 5.4.0开始有效)