[英]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的更新記錄(使用mysql
或phpMyAdmin
)。
但是,當我將以下代碼放在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
只是為了更清楚地表明我期望通過套接字進行連接。)
如果仍然無法解決問題,請執行以下疑難解答步驟:
放置一個phpinfo()
文件,並在MySQLi部分下查看,特別注意MYSQLI_SOCKET
和mysqli.default_socket
的值(本地值和主值)。 此值有可能在某個地方被覆蓋。 如果您在MYSQLI_SOCKET
看到一個不同的值,則可能受--with-mysqli-sock
編譯時標志的影響。
您可以運行mysqli_get_host_info($link)
的輸出(只是看看它是通過TCP還是通過套接字連接)。
您還可以通過在mysqli_connect()
的第6個參數( $socket
)中手動傳遞正確的套接字來進行測試。 同樣,這需要與$host
參數的NULL
/ localhost
結合使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.