Isu Keserasian PHP MySQL
Apabila menyambung ke pangkalan data MySQL jauh daripada pelayan WAMP tempatan yang menjalankan PHP 5.3.0, ralat berlaku:
Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected. PID=5880 in ... Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication in ...
Isu ini biasanya nyata apabila menyambung ke pangkalan data MySQL yang lebih lama (mis., versi 5.0.22) tetapi bukan kepada yang lebih baharu (mis., versi 5.0.45).
Punca:
Masalah timbul apabila akaun MySQL yang digunakan mempunyai cincang kata laluan 16 aksara lama.
Penyelesaian:
Untuk menyelesaikan isu, tetapkan semula kata laluan untuk akaun yang bermasalah untuk menggunakan format kata laluan moden. Jalankan pertanyaan berikut dalam klien MySQL:
SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword');
Maklumat Tambahan:
Untuk mengesahkan sama ada cincangan kata laluan memang lama, jalankan pertanyaan berikut pada yang lebih lama Pelayan MySQL (versi 5.0.22):
SELECT Length(`Password`), Substring(`Password`, 1, 1) FROM `mysql`.`user` WHERE `user`='username';
Jika medan 'Panjang' mengembalikan 16 dan medan 'Subrentetan' mengembalikan aksara '*', cincang kata laluan adalah lama.
Atas ialah kandungan terperinci Mengapa Sambungan PHP 5.3.0 Saya ke Pangkalan Data MySQL Lama Gagal dengan \'paket OK 6 bait lebih pendek daripada jangkaan\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!