<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[实践OK]PHP 遇到mysql header不致的问题：Headers and client library minor version mismatch是myql不同版本同在一台机器上导致的，如何卸载重新安装以成功避免。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Wed, 19 Mar 2014 08:10:44 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	Percona MySQL 升級 5.6 後, PHP 的 mysql_connect() 就出現下述警告(Warning)訊息:<br/>PHP Warning:&nbsp;&nbsp;mysql_connect(): Headers and client library minor version mismatch. Headers:50531 Library:50613 ...<br/>Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50153 Library:50613 in /data/htdocs/jackxiang.com/libraries/database/mysqlrw.php on line 271 <br/>要如何解決?<br/><br/>实践Ok步骤及注意点：<br/>第一点：出现这种情况的可能性必定是因为这个Linux不是纯净的Linux，里面以前有rpm，或低版本的Mysql安装，如何解决之：<br/>第一步：干掉所有的mysql相关的rpm包：<br/>rpm -qa &#124; grep -i mysql &#124; xargs rpm -e --allmatches --nodeps <br/>第二步：是干掉所有相关mysql的各种通过源码安装的安装包及动态库：<br/>find /usr -name &quot;mysql&quot; -exec rm -rf &#123;&#125; &#92;;<br/>find /usr -name &quot;my*&quot; -exec rm &#123;&#125; &#92;;<br/>这下一下子就清静了。<br/>注意点：<br/>1）有可能出现你是干掉了，但是你再安装时还是出现上述错误，为何：<br/>这涉及到有可能关于编译make的问题，makefile如果你颠倒了（也就是你先编译后，再去删除mysql，重新编译（没有clean掉生成的so，.a），因为之前编译的还在，它引用的还是原来的那个mysql header，依旧不行滴。），为此，你得先干死mysql，php，然后是把它们的目录挪动到加上-bak的，如：mysql-bak。<br/>2）把源码包删除掉，重新tar 解压出一份目录，mysql再cmake，php再进行./configure。当然，如果通过make clean能清完，也可以不用删除再重新解包，我是直接删除，再完全重新编译。<br/>总之，不能让先前安装好的包，先前编译的源码包里沾染上原来旧版本的mysql包，这才是核心，否则，编译出来问题依旧，达不到想要的目的。<br/>———————————————————————————————————————————————————————————————<br/><textarea name="code" class="php" rows="15" cols="100">
[root@localhost vhost]# /usr/local/php/bin/php -i&#124;grep Client
Client API version =&gt; 5.6.12
Client API library version =&gt; 5.6.12
Client API header version =&gt; 5.1.34
</textarea><br/>出現此訊息 Warning: mysql_connect() [function.mysql-connect]: Headers and client library minor version mismatch.<br/>是因為 PHP 在編譯時, MySQL 的 header 跟 library 不一致所造成,<br/>有可能系統中曾經裝了兩個版本以上的 MySQL, 可能是套件或 tarball 安裝。<br/><br/><br/>PHP报：<br/>KoException [ 0 ]: mysql_connect(): headers and client library minor version mismatch. headers:50153 Library:50614<br/>一）Mysql头文件header（如果其他地方有头文件，而又是系统PATH里的优先找找的，可能header头就和新的mysql版本里的头不一样）：<br/>/usr/local/mysql/include/my_global.h<br/>/*<br/> Prevent inclusion of&nbsp;&nbsp;Windows GDI headers - they define symbol<br/> ERROR that conflicts with mysql headers.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>*/<br/><br/>二）PHP源码识别匹配并报错的代码：<br/>./ext/mysqli/mysqli_nonapi.c:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Headers and client library minor version mismatch. Headers:%d Library:%ld&quot;,<br/>#if !defined(MYSQL_USE_MYSQLND)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ((MYSQL_VERSION_ID / 100) != (mysql_get_client_version() / 100)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;php_error_docref(NULL TSRMLS_CC, E_WARNING,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Headers and client library minor version mismatch. Headers:%d Library:%ld&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_VERSION_ID, mysql_get_client_version());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>./ext/mysql/php_mysql.c:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Headers and client library minor version mismatch. Headers:%d Library:%ld&quot;<br/>#if !defined(MYSQL_USE_MYSQLND)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ((MYSQL_VERSION_ID / 100) != (mysql_get_client_version() / 100)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;php_error_docref(NULL TSRMLS_CC, E_WARNING,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Headers and client library minor version mismatch. Headers:%d Library:%ld&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_VERSION_ID, mysql_get_client_version());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>#endif<br/><br/>解決方式: 把所有 MySQL 套件移除及 /usr 其下所有 MySQL 相關 header 及 library 刪除, 再重裝 MySQL (用套件或 tarball 均可)<br/>rpm -qa &#124; grep -i mysql &#124; xargs rpm -e --nodeps # 僅適用 RPM 系 Linux<br/>find /usr -name &quot;mysql&quot; -exec rm -rf &#123;&#125; &#92;;<br/>find /usr -name &quot;my*&quot; -exec rm &#123;&#125; &#92;;<br/>http://pank.org/blog/2012/02/headers-client-library-minor-version-mismatch.html<br/>果然有老版本的mysql：<br/>[root@localhost vhost]# rpm -qa &#124; grep -i mysql <br/>mysql-devel-5.0.95-5.el5_9<br/>mysql-5.0.95-5.el5_9<br/>mysql-5.0.95-5.el5_9<br/>mysql-devel-5.0.95-5.el5_9<br/><br/>我只是把mysql-5.0.95-5.el5_9卸载了,没有重新编译mysql5.6.12，问题依旧存在，卸载rpm时还遇到 specifies multiple packages，最后强制卸载mysql旧的rpm包：<br/>http://jackxiang.com/post/6976/<br/>—————————————————————————————————————————————————————————————<br/><br/>昨日在 MySQL Server 遇到使用 Prepared Statements 出現問題, 系統出現以下訊息:<br/>headers and client library minor version mismatch<br/><br/>出現問題原因是 mysql server 及 mysql client 的版本不一致, 因為早前透過 yum 更新了 mysql, 但就沒有更新 php, 所以 php 裡面的 mysql client 還是使用舊版, 版本只有小許不同就會出現這個問題。但奇悝是執行其他 SQL Query 則沒有問題, 只是使用 Prepared Statements 才有問題。<br/><br/>重新編譯了 PHP 後, 便可回復正常。<br/><br/>来自：http://blog.longwin.com.tw/2013/10/php-headers-client-library-minor-version-mismatch-2013/<br/>http://www.hkcode.com/programming/773<br/>http://www.joe-ho.com/mysql_connect-headers-and-client-library-minor-version-mismatch/<br/><br/><br/>Fix PHP mysql_connect() Headers and client library minor version mismatch:<br/>出現此訊息 Warning: mysql_connect() [function.mysql-connect]: Headers and client library minor version mismatch.<br/>是因為 PHP 在編譯時, MySQL 的 header 跟 library 不一致所造成,<br/>有可能系統中曾經裝了兩個版本以上的 MySQL, 可能是套件或 tarball 安裝<br/><br/>解決方式: 把所有 MySQL 套件移除及 /usr 其下所有 MySQL 相關 header 及 library 刪除, 再重裝 MySQL (用套件或 tarball 均可)<br/>rpm -qa &#124; grep -i mysql &#124; xargs rpm -e --nodeps # 僅適用 RPM 系 Linux<br/>find /usr -name &quot;mysql&quot; -exec rm -rf &#123;&#125; &#92;;<br/>find /usr -name &quot;my*&quot; -exec rm &#123;&#125; &#92;;<br/><br/>实践：<br/>[root@emulMachine opt]# rpm -qa&#124;grep mysql<br/>mysql-devel-5.0.95-5.el5_9<br/>mysql-5.0.95-5.el5_9<br/>mysql-5.0.95-5.el5_9<br/>mysql-devel-5.0.95-5.el5_9<br/>出现：<br/>[root@emulMachine opt]# rpm -e mysql-devel-5.0.95-5.el5_9<br/>error: &quot;mysql-devel-5.0.95-5.el5_9&quot; specifies multiple packages<br/>加上如下参数：<br/>rpm -qa &#124; grep -i mysql &#124; xargs rpm -e --allmatches --nodeps <br/>rpm卸载时遇到&quot;xxx specifies multiple packages&quot;的问题 ，加上--allmatches：<br/>原文：http://blog.csdn.net/yasi_xi/article/details/7597353<br/><br/>指名mysql安装目录及mysql_config目录：<br/><textarea name="code" class="php" rows="15" cols="100">
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo&nbsp;&nbsp;--with-pear&nbsp;&nbsp;--enable-session&nbsp;&nbsp; --enable-hash&nbsp;&nbsp;--enable-soap=shared --enable-pdo --enable-dom&nbsp;&nbsp;--enable-xmlwriter --with-pcre-regex&nbsp;&nbsp;--enable-mbstring --enable-exif --enable-sysvmsg --with-mcrypt --with-gd&nbsp;&nbsp; --enable-gd-jis-conv --disable-debug&nbsp;&nbsp;&nbsp;&nbsp;--silent --enable-sockets&nbsp;&nbsp;--enable-sysvshm --enable-calendar&nbsp;&nbsp; --enable-opcache
make ZEND_EXTRA_LIBS=&#039;-liconv&#039;
make install
</textarea><br/><br/>来自：http://pank.org/blog/2012/02/headers-client-library-minor-version-mismatch.html
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]PHP 遇到mysql header不致的问题：Headers and client library minor version mismatch是myql不同版本同在一台机器上导致的，如何卸载重新安装以成功避免。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>