Pertanyaan Ketidakcocokan header dan klien versi minor


Di PHP saya mendapatkan peringatan berikut setiap kali saya mencoba untuk terhubung ke database (via mysql_connect)

Peringatan: mysql_connect (): Ketidakcocokan versi header dan klien versi minor. Header: 50162 Pustaka: 50524

Di dalam saya php -i output Saya memiliki nilai-nilai berikut yang terdaftar di bawah mysqli

Versi perpustakaan API Klien => 5.5.24

Versi header API Klien => 5.1.62

Saya sudah mencoba memperbarui php5-mysql dan php tapi saya sudah di versi terbaru dari keduanya. Bagaimana cara saya memperbarui versi tajuk agar saya berhenti melihat peringatan ini?

EDIT

File MySQL saya semua harus diperbarui menjadi versi terbaru:

$ 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.

Menghapus versi lama

$ 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

75
2018-05-25 18:06


asal


Jawaban:


PHP Anda dikompilasi dengan MySQL 5.1 tetapi sekarang ini menghubungkan perpustakaan mysql dari 5.5.X keluarga. Anda harus meningkatkan PHP ke versi yang dikompilasi dengan MySQL 5.5 atau mengembalikan pustaka klien mysql ke 5.1.x.


30
2018-05-26 18:29



Saya menggunakan MariaDB dan memiliki masalah serupa.

Dari Situs MariaDB, disarankan untuk memperbaikinya dengan

  1. Beralih ke menggunakan driver mysqlnd di PHP (Solusi yang disarankan).
  2. Jalankan dengan tingkat pelaporan kesalahan yang lebih rendah:

    $err_level = error_reporting(0);  
    $conn = mysql_connect('params');  
    error_reporting($err_level); 
    
  3. Mengkompilasi ulang PHP dengan pustaka klien MariaDB.
  4. Gunakan perpustakaan klien MySQL asli Anda dengan MariaDB.

Masalah saya diperbaiki dengan menggunakan driver mysqlnd di Ubuntu:

sudo apt-get install php5-mysqlnd

Tepuk tangan!


[update: informasi tambahan] Memasang driver ini juga menyelesaikan masalah PDO yang mengembalikan nilai integer sebagai string. Untuk mempertahankan tipe sebagai integer, setelah menginstal mysqlInd, lakukan ini

$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);

119
2018-03-17 12:16



Untuk keluarga baru MySQL 5.6 Anda perlu menginstal php5-mysqlnd, bukan php5-mysql.

Hapus versi driver mysql ini

sudo apt-get remove php5-mysql

Dan instal ini sebagai gantinya

sudo apt-get install php5-mysqlnd

63
2017-08-11 15:51



Pekerjaan yang sama untuk MySQL:

sudo apt-get install php5-mysqlnd

Saya sudah membaca thread ini mencoba mencari solusi untuk MySQL, dan saya juga melihat jawaban ken, tapi saya mengabaikan solusi untuk MariaDB, membuang beberapa jam seperti itu. Tidak jelas bagi saya bahwa hal yang sama mungkin berlaku untuk MySQL. Posting ini hanya untuk memberi Anda beberapa jam yang hilang.


22
2018-04-24 14:40



Alasan root untuk kesalahan ini adalah PHP memisahkan dirinya dari pustaka Klien MySQL beberapa waktu lalu. Jadi apa yang terjadi (terutama pada kompilasi yang lebih tua dari linux) adalah orang-orang akan mengkompilasi PHP build yang diberikan dari Klien MySQL (artinya versi MySQL yang diinstal tidak relevan) dan tidak di-upgrade (di CentOS paket ini terdaftar sebagai mysqlclientXX, dimana XX mewakili nomor paket). Ini juga memungkinkan pengelola paket untuk mendukung versi MySQL yang lebih rendah. Ini cara yang berantakan untuk melakukannya, tetapi itu adalah satu-satunya cara yang diberikan bagaimana PHP dan MySQL menggunakan lisensi yang berbeda.

MySQLND memecahkan masalah dengan menggunakan driver asli PHP (ND), yang tidak lagi bergantung pada MySQL Client. Ini juga dikompilasi untuk versi PHP yang Anda gunakan. Ini adalah solusi yang lebih baik di sekitar, jika tidak ada alasan lain mengapa MySQLND dibuat untuk berbicara dengan PHP ke MySQL.

Jika Anda tidak dapat menginstal MySQLND Anda benar-benar dapat dengan aman mengabaikan kesalahan ini untuk sebagian besar. Itu lebih dari pemberitahuan FYI dari apa pun. Kedengarannya menakutkan.


9
2018-05-21 02:08



Untuk mengkompilasi php dari sumber dengan Driver asli 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

Dari /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

Satu atau lebih ekstensi PHP MySQL dapat dimasukkan dengan menggunakan opsi ini.
Jika nilai tidak diteruskan ke opsi ini, atau jika nilainya mysqlnd, Driver asli MySQL akan digunakan.


2
2017-08-26 12:26



Saya mendapat php yang sama di situs wordpress saya ...

Err: Peringatan: mysql_connect (): Tajuk dan pustaka klien mismatch versi minor. Header: 50547 Pustaka: 50628 di /home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php on line 1515

Penyebab: Saya memperbarui versi wp 4.2 ke 4.5 (PHP dan MySql mismatch)

Saya mengubah wp-db.php pada baris 1515

$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );

untuk

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 );
}

Yang didapatnya tanpa melakukan kesalahan di situs wordpress saya


1
2018-04-12 20:27



Jika Anda memiliki akses cpanel atau whm untuk hosting web domain ...

Di cPanel, Buka tab "Perangkat Lunak dan layanan", >> lalu klik "Pilih Versi PHP" >> setel versi yang diinginkan dari php ...

Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50628 in chennaitechnologies.com

Misalnya. Versi PHP saat ini:

Versi PHP [5.2] (daftar 5.2, 5.3, 5.4, 5.5, 5.6 versi php yang tersedia)

Peringatan: Mengubah modul php dan opsi php melalui Pemilih PHP untuk versi php asli tidak mungkin

Saya memilih versi 5.6 php, setelah kesalahan itu dihapus di situs blog wordpress saya ...


1
2018-04-18 21:02