簡體   English   中英

php mysqli連接到舊版本

[英]php mysqli connect to old version

我的服務器上安裝了MySQL的兩個版本,即5.6.20和5.7.25。

我的php.ini

; php.ini
mysqli.default_socket=/opt/local/var/run/mysql57/mysqld.sock

我可以使用phpMyAdmin編輯5.7.25的表,此后,我可以正確地看到5.7.25的更新記錄(使用mysqlphpMyAdmin )。

但是,當我將以下代碼放在php文件中時,我得到版本號5.6.20:

$link = mysqli_connect("127.0.0.1", USERNAME, PASSWORD, "testdb");
echo mysqli_get_server_version($link);       # shows 50620

有什么問題嗎? 謝謝。

問題是127.0.0.1實際上與MySQL的localhost $host參數中傳遞IP地址時,將強制通過TCP / IP進行連接。 而是傳遞"localhost" ,它應使用默認的UNIX套接字而不是網絡套接字。 (當使用默認套接字時,我實際上更喜歡傳遞NULL將其轉換為localhost只是為了更清楚地表明我期望通過套接字進行連接。)


如果仍然無法解決問題,請執行以下疑難解答步驟:

  1. 放置一個phpinfo()文件,並在MySQLi部分下查看,特別注意MYSQLI_SOCKETmysqli.default_socket的值(本地值和主值)。 此值有可能在某個地方被覆蓋。 如果您在MYSQLI_SOCKET看到一個不同的值,則可能受--with-mysqli-sock編譯時標志的影響。

  2. 您可以運行mysqli_get_host_info($link)的輸出(只是看看它是通過TCP還是通過套接字連接)。

  3. 您還可以通過在mysqli_connect()的第6個參數( $socket )中手動傳遞正確的套接字來進行測試。 同樣,這需要與$host參數的NULL / localhost結合使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM