Posted by & filed under MySQL, PHP.

After having MySQL 5.6.17 published, some users complained about a warning thrown by their PHP applications :

PHP Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50535 Library:50617

In fact, this could happen with any application linked to libmysqlclient18 in a certain version (php5-mysql from Dotdeb is linked to the 5.5.35 version from the stock Debian distribution) when connecting to a MySQL server in another version (5.6.17 in our case). The warning is thrown by libmysqlclient18 itself. And this is just a warning, there is no reason why any bad behavior would happen in that case.

Of course, I could build php5-mysql against the latest libmysqlclient18 (5.6.17), but it would lead to very bad issues, such as duplicate symbols or segfaults when PHP is loaded with other MySQL-linked modules from the stock Debian distribution (those are linked to libmysqlclient18 5.5.35). For example : mod_php5 + Apache + mod_auth_mysql would crash.

If this this warning really annoys you, feel free to install php5-mysqlnd instead of php5-mysql :

  • it’s a drop-in replacement
  • it’s not linked against any libmysqlclient library
  • it won’t throw any irrelevant warning about version mismatch
  • it has a lot of benefits. See http://www.php.net/mysqlnd for more info

I hope this helps.

17 Responses to “About the “mysql_connect(): Headers and client library minor version mismatch” warning”

  1. mrr

    Salut, dit moi prochainement pense tu rajouter MariaDB dans tes dépot ?

    je les utilise depuis 2008 mais je compte passer sous MariaDB depuis sa recente version 10 stable

  2. Guillaume Plessis

    @mrr : c’est quelque chose que j’envisage éventuellement pour la version 10 de MariaDB. Encore un peu de boulot pour déterminer si c’est possible sans tout casser 🙂

  3. Cédric

    Bonjour,

    J’ai moi même mon fichier d’erreurs PHP qui a beaucoup grossi d’un coup, après la mise à jour (en gros une ligne par requête mysql 🙂

    Est-ce que tous ces warnings & ces écritures dans les logs ne ralentissent pas mon serveur ?

    Possibilité de désactiver ce warning uniquement au lieu de désactiver tous les warnings ?

    merci

  4. Cédric

    Oui, il faut que je me penche dessus. Je ne connais pas toutes les implications… C’est exactement pareil que php5-mysql ? (si ce dernier est déjà installé il faut que je le désinstalle avant ? … je suis sur un serveur de prod 🙂

  5. Marcus

    Ok, I can understand in only in the basics.

    My problem is now, that I have some websites within a plesk environment and tha used software shows this error message in the header.

    There is no way to change to mysqlnd because it breaks plesk.

    Any solution?!

  6. toctoc

    j’ai fait la mise la jour sur le serveur de prod sans problème, cependant attention au dépendence.

    perso j’ai installer mysqlnd, qui lui a désinstaller mysql pour le remplacé

    et exemple j’avais des dépendance avec un gestionnaire de mail, qui on été remplacé part la même chose aussi mais en pgsql, vu que je ne m’en sert pas cela ne m’inquiété pas plus que sa

  7. Tobias Schlemmer

    In our case the mysql-server was still 5.5.35 from debian source. But the libmysqlclient18 package was 5.6.17 from dotdeb source. You can check this by
    mysqld –version
    dpkg -l | grep “mysql”

    So we solved it the following way:
    1) Update the sources.list (so you get only PHP5.5 without MYSQL5.6 from dotdeb)

    #deb http://packages.dotdeb.org wheezy all
    #deb-src http://packages.dotdeb.org wheezy all
    deb http://packages.dotdeb.org wheezy-php55 all
    deb-src http://packages.dotdeb.org wheezy-php55 all

    2) Downgrade libmysqlclient manually. Pick the right package (https://packages.debian.org/wheezy/libmysqlclient18)

    wget http://ftp.ch.debian.org/debian/pool/main/m/mysql-5.5/libmysqlclient18_5.5.35+dfsg-0+wheezy1_amd64.deb
    dpkg -i libmysqlclient18_5.5.35+dfsg-0+wheezy1_amd64.deb

    3) Restart services

    /etc/init.d/mysql restart
    /etc/init.d/apache restart

  8. Marcus

    Thank you … do you think it would work even if mysql 5.6 is installed?

  9. david

    Bonjour,

    j’ai fait la mise a jour vers MySQL 5.6.17 et depuis ispconfg ne fonctionne plus (page blanche). je suis en mod-apache. Mon site lui fonctionne après un reboot ( sinon soucis acces base de données).
    j’ai tenté la résintallation d’ispconfig, rien, nada.

    j’ai aussi ce message d’erreur !

    Sur un autre vps , par contre pas de soucis.
    Si on a un backup d’ispconfig, remettre l’ancien ne causera pas de soucis ( version php/mysql précédente).

    merci !

  10. david

    hello,
    pas de réponse. pas cool.
    Now ispconfig is ok.

    On m’a résolu le soucis d’ispconfig mais avec :
    PHP
    v5.5.11-1~dotdeb.1
    MYSQL
    v5.6.17-1~dotdeb.1

    pourquoi debian me demande de mettre a jour mysql en version 5 ?
    apt-get upgrade
    Lecture des listes de paquets… Fait
    Construction de l’arbre des dépendances
    Lecture des informations d’état… Fait
    Les paquets suivants seront mis à jour :
    mysql-client-5.5 mysql-server-5.5 mysql-server-core-5.5 (??)

    quand je le fais j’ai, bien sur, une erreur :

    Les paquets suivants seront mis à jour :
    mysql-server-5.5
    1 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
    2 partiellement installés ou enlevés.
    Il est nécessaire de prendre 0 o/2 188 ko dans les archives.
    Après cette opération, 7 168 o d’espace disque supplémentaires seront utilisés.
    Souhaitez-vous continuer [O/n] ? O
    Lecture des fichiers de modifications (« changelog »)… Terminé
    Préconfiguration des paquets…
    (Lecture de la base de données… 83695 fichiers et répertoires déjà installés.)
    Préparation du remplacement de mysql-server-5.5 5.5.35+dfsg-0+wheezy1 (en utilisant …/mysql-server-5.5_5.5.37-0+wheezy1_amd64.deb) …
    [ ok ] Stopping MySQL database server: mysqld.
    Aborting downgrade from (at least) 5.6 to 5.5.
    If are sure you want to downgrade to 5.5, remove the file
    /var/lib/mysql/debian-*.flag and try installing again.
    dpkg: erreur de traitement de /var/cache/apt/archives/mysql-server-5.5_5.5.37-0+wheezy1_amd64.deb (–unpack) :
    le sous-processus nouveau script pre-installation a retourné une erreur de sortie d’état 1
    [ ok ] Stopping MySQL database server: mysqld.
    insserv: warning: script ‘K02jailkit’ missing LSB tags and overrides
    insserv: warning: script ‘jailkit’ missing LSB tags and overrides
    [….] Starting MySQL database server: mysqldPas de répertoire, connexion avec HOME=/
    . ok

    Alors j’effectue la manoeuvre au risque de tout casser, je supprime mysql 5.6, je ré-installe la 5.6 ?
    Sur une autre debian, je n’ai eu aucun soucis.

    Merci, thanks !

  11. toctoc

    simplement installer mysqlnd peut etre ?

    j’ai pareil en config
    debian, ispConfig, 5.6.17-1 (mysql) , php 5.5.12

  12. whomass

    Thanks, Guillaume. For this blog post and the tip regarding PHP’s native driver. Solved my problem perfectly.

    And of course thanks a million for maintaining the Dotdeb packages.

  13. countertops

    After I initially commented I seem to have clicked on the -Notify
    me when new comments are added- checkbox and now whenever a comment
    is added I get 4 emails with the exact same comment. Is there a means you can remove me from that service?
    Many thanks!

Trackbacks/Pingbacks

  1.  Error MySQL : mysql_connect(): Headers and client library minor version mismatch « Jefri P's blog
  2.  MySQL issue about “mysql_connect(): Headers and client library minor version mismatch” | Udevnode
  3.  Mysqlnd: replace your old php mysql client library by mysqlnd | Deimosfr Blog
  4.  PHP 5.5.14 for Debian Wheezy | Dotdeb