Ошибка при соединении с MySQL с помощью PHP/PDO

Мой код работал весь штраф вчера, и сегодня он внезапно просто не хочет соединяться с моей базой данных. Я не изменил настроек на нем или на коде, и я не обновил программного обеспечения также. Все, что я делаю, является этим:

new PDO('mysql:host=localhost;port=3306;dbname=test', 'username', 'password');

И я получаю хорошее сообщение об исключении, говоря это:

Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in ...

Вещь: я ясно не пытаюсь соединить использование сокета Unix, но использование TCP/IP. Что я делаю неправильно? Есть ли что-то, что я пропускаю здесь?

Спасибо за любую справку.

33
задан Your Common Sense 5 November 2019 в 17:22
поделиться

1 ответ

Вы используете сокет Unix. При чтении «localhost» клиентские библиотеки MySQL не интерпретируют его как TCP-хост «localhost» и разрешают это имя, а используют местоположение сокета по умолчанию. Для использования TCP на локальном компьютере вы должны использовать 127.0.0.1 в качестве имени хоста.

Чтобы указать прошлое, используйте unix_socket вместо хоста в DSN . Местоположение сокета, используемого для localhost , может быть определено во время компиляции или в некоторых версиях PHP с помощью pdo_mysql.default_socket в php.ini .

87
ответ дан 27 November 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: