php mysqli подключиться к старой версии - PullRequest
0 голосов
/ 06 апреля 2019

На моем сервере установлены две версии MySQL, 5.6.20 и 5.7.25.

Мой php.ini имеет

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

Я могу редактировать таблицы для 5.7.25, используя phpMyAdmin, после чего я вижу правильно обновленные записи (при использовании mysql или phpMyAdmin) для 5.7.25.

Но когда я помещаю следующие коды в php-файл, я получаю номер версии 5.6.20:

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

В чем проблема? Спасибо.

1 Ответ

2 голосов
/ 06 апреля 2019

Проблема в том, что 127.0.0.1 на самом деле не то же самое, что localhost для MySQL.Когда вы передаете IP-адрес в параметре $host, соединение устанавливается по TCP / IP.Вместо этого передайте "localhost", и он должен использовать сокет UNIX по умолчанию вместо сетевого сокета.(При использовании сокета по умолчанию я на самом деле предпочитаю передавать NULL - который преобразуется в localhost - просто чтобы было яснее, что я ожидаю соединения через сокет.)


Если это все еще не работает, вот несколько шагов по устранению неполадок, которые вы можете предпринять:

  1. Поместите файл phpinfo() и просмотрите раздел MySQLi с конкретнымиобратите внимание на значения MYSQLI_SOCKET и mysqli.default_socket (как локальные, так и основные значения).Возможно, что либо это значение где-то переопределяется.Если вы видите другое значение в MYSQLI_SOCKET, вероятно, на него влияет флаг --with-mysqli-sock времени компиляции.

  2. Вы можете запустить, выводя вывод mysqli_get_host_info($link) (просточтобы проверить, подключается ли он через TCP или сокет).

  3. Вы также можете проверить, вручную передав правильный сокет в 6-й параметр ($socket) из mysqli_connect().Опять же, это должно быть объединено с использованием NULL / localhost для аргумента $host.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...