87

mysql_connectPHP では、(経由で)データベースに接続しようとするたびに、次の警告が表示されます。

警告: 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
4

15 に答える 15

128

私は MariaDB を使用していますが、同様の問題があります。

MariaDB サイトから、次の方法で修正することをお勧めします。

  1. PHP で mysqlnd ドライバーを使用するように切り替えます (推奨される解決策)。
  2. MariaDB クライアント ライブラリを使用して PHP を再コンパイルします。
  3. MariaDB でオリジナルの MySQL クライアント ライブラリを使用します。

私の問題は、Ubuntu で mysqlnd ドライバーを使用することで修正されました。

sudo apt-get install php5-mysqlnd

[更新: 追加情報] このドライバーをインストールすると、整数値を文字列として返す PDO の問題も解決されます。型を整数のままにするには、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);
于 2014-03-17T12:16:49.570 に答える
69

新しい MySQL 5.6 ファミリの場合、php5-mysql ではなく、php5-mysqlnd をインストールする必要があります。

このバージョンの mysql ドライバーを削除します

sudo apt-get remove php5-mysql

代わりにこれをインストールします

sudo apt-get install php5-mysqlnd
于 2014-08-11T15:51:07.553 に答える
31

PHP は MySQL 5.1 でコンパイルされましたが、現在は 5.5.X ファミリーの mysql ライブラリをリンクしています。PHP を MySQL 5.5 でコンパイルされたバージョンにアップグレードするか、mysql クライアント ライブラリを 5.1.x に戻す必要があります。

于 2012-05-26T18:29:27.393 に答える
23

同じことが MySQL でも機能します。

sudo apt-get install php5-mysqlnd

MySQLの解決策を見つけようとしてこのスレッドを読みました.kenの答えも見ましたが、MariaDBの解決策を無視して、そのように数時間を無駄にしました. 同じことがMySQLにも当てはまるかどうかは、私にはわかりませんでした。この投稿は、私が失った数時間を惜しまないためのものです。

于 2014-04-24T14:40:37.770 に答える
11

このエラーの根本的な原因は、PHP がしばらく前に MySQL クライアント ライブラリから分離されたことです。したがって、(主に Linux の古いコンパイルで) 何が起こっているかというと、人々はMySQL クライアントの特定のビルドに対して PHP をコンパイルし(インストールされている MySQL のバージョンは無関係であることを意味します)、アップグレードはしません (CentOS では、このパッケージは としてリストされていmysqlclientXXますXX。パッケージ番号)。これにより、パッケージのメンテナは MySQL の下位バージョンをサポートすることもできます。これは面倒な方法ですが、PHP と MySQL が異なるライセンスを使用していることを考えると、これが唯一の方法でした。

MySQLNDは、もはや MySQL クライアントに依存しない PHP 独自のネイティブ ドライバー (ND) を使用することで、この問題を解決します。また、使用している PHP のバージョン用にコンパイルされています。これは、PHP が MySQL と通信するように MySQLND が作成されている他の理由がなければ、全体的に優れたソリューションです。

MySQLND をインストールできない場合、このエラーのほとんどは実際には安全に無視できます。それは何よりもFYI通知です。怖いですね。

于 2015-05-21T02:08:43.973 に答える
2

ソースから PHP をMySQL ネイティブ ドライバー (mysqlnd)でコンパイルするには、

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

これらのオプションを使用して、1 つ以上の PHP MySQL 拡張機能を含めることができます。
これらのオプションに値が渡されない場合、または値が の場合mysqlnd、MySQL ネイティブ ドライバーが使用されます。

于 2014-08-26T12:26:59.113 に答える
1

ドメイン Web ホスティング用の cpanel または wm にアクセスできた場合 ...

cPanel で、[ソフトウェアとサービス] タブに移動し、>> [PHP バージョンの選択] をクリックします >> 目的のバージョンの php を設定します...

警告: mysql_connect(): ヘッダーとクライアント ライブラリのマイナー バージョンが一致しません。 ヘッダー:50547 ライブラリ:50628 in chennaitechnologies.com

例えば。現在の PHP バージョン:

PHP バージョン [5.2] (使用可能な 5.2、5.3、5.4、5.5、5.6 の php バージョンのリスト)

警告: ネイティブ php バージョンの PHP セレクターを介して php モジュールと php オプションを変更することはできません

wordpress ブログ サイトでエラーが解消された後、5.6 php バージョンを選択しました...

于 2016-04-18T21:02:32.483 に答える
1
Warning: mysqli::mysqli(): Headers and client library minor version mismatch.
Headers:50547 Library:100026

Apacheを再構築するだけで上記のエラーを解決しました:

cPanel Version  56.0 (build 25)
Apache Version  2.4.18
PHP Version 5.5.30
MySQL Version   10.0.26-MariaDB
于 2016-07-16T21:31:11.650 に答える
1

wordpress サイトで同じ php warring が発生しました...

Err: 警告: mysql_connect(): ヘッダーとクライアント ライブラリのマイナー バージョンが一致しません。Headers:50547 Library:50628 in /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 );
}

私のワードプレスサイトでエラーが発生することはありません

于 2016-04-12T20:27:31.983 に答える
0

WHM と cPanel の場合、ビルドする mysqli を明示的に設定する必要があるバージョンもあります。

WHM を使用して、CENTOS 6.9 xen pv [dc] v68.0.27 の下で、すべてのオプションを調べ、ビルドする mysqli を選択して Apache/PHP を再構築する必要がありました。デフォルトでは、非推奨の mysql がビルドされました。これで減価償却のメッセージはなくなり、将来の MySQL アップグレードの準備が整いました。

于 2018-01-25T21:34:47.247 に答える
0

Percona/MySQL 5.6 を使用し、php ドライバーが 5.5 でコンパイルされ、一部のアプリでは php5-mysql が必要な場合にこの問題が発生するため、ドライバーを再構築するスクリプトを作成します。

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

于 2015-01-07T15:19:56.287 に答える
-1

PHPのバージョンを5.6から5.5に変更 修正しました

コントロール パネル > CGI スクリプトに移動し、そこで PHP のバージョンを変更する必要があります。

于 2018-10-11T06:47:40.287 に答える