Предупреждение: mysql_connect (): [2002] Нет такого файла или каталога (пытается подключиться через unix: ///tmp/mysql.sock) в - PullRequest
238 голосов
/ 19 ноября 2010

Я пытаюсь подключиться к моей базе данных MySQL через терминал на моем Apple (с PHP).

Вчера все работало нормально, и теперь я неожиданно получаю сообщение об ошибке в заголовке.

Сценарий работает, когда я использую свой браузер для его запуска (у меня установлен XAMPP), но Терминал отказывается подключаться к БД.

Вот файл, который я включаю для подключения (скрипт работает, когда яне включайте это, но тогда оно не подключается к БД):

<?php
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("FNB1C_data") or die(mysql_error());
?>

Это должно работать, так как оно работает с моим браузером.

Команда, которую я использую на Терминале, php scriptname.php.

Ответы [ 17 ]

1 голос
/ 08 января 2013

Другое решение состоит в том, чтобы исправить местоположение сокета в файле конфигурации php.ini следующим образом:

pdo_mysql.default_socket=/tmp/mysql.sock

Конечно, символическая ссылка тоже работает, поэтому ее предпочтение следует выбирать из тех, которые вы меняете.

1 голос
/ 23 мая 2013

Когда вы устанавливаете php53-mysql через порт, он возвращает следующее сообщение, которое решает эту проблему:

To use mysqlnd with a local MySQL server, edit /opt/local/etc/php53/php.ini
and set mysql.default_socket, mysqli.default_socket and
pdo_mysql.default_socket to the path to your MySQL server's socket file.

For mysql5, use /opt/local/var/run/mysql5/mysqld.sock
For mysql51, use /opt/local/var/run/mysql51/mysqld.sock
For mysql55, use /opt/local/var/run/mysql55/mysqld.sock
For mariadb, use /opt/local/var/run/mariadb/mysqld.sock
For percona, use /opt/local/var/run/percona/mysqld.sock
0 голосов
/ 06 апреля 2019

Клиент mySQL по умолчанию пытается подключиться через локальный файл, называемый сокетом, вместо подключения к адресу обратной связи (127.0.0.1) для localhost.

Местоположение этого файла сокета по умолчанию, по крайней мере в OSX, /tmp/mysql.sock.

БЫСТРОЕ, МЕНЬШЕ ЭЛЕГАНТНОЕ РЕШЕНИЕ

Создайте символическую ссылку, чтобы обмануть ОС и найти правильный сокет.

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp

правильное решение

Изменить путь к сокету, определенный в файле startMysql.sh в /Applications/MAMP/bin.

0 голосов
/ 06 июня 2017

Поскольку вы можете использовать MAMP, либо измените ваш порт на 3306 по умолчанию, либо используйте 127.0.0.1 в файле database.php

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',// leave it for port 3306
    'username' => 'yourUserhere',
    'password' => 'yourPassword',
    'database' => 'yourDatabase',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

Или с настройками по умолчанию:

$db['default'] = array(
        'dsn'   => '',
        'hostname' => '127.0.0.1:8889',// leave it for port 8889
        'username' => 'yourUserhere',
        'password' => 'yourPassword',
        'database' => 'yourDatabase',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
    );
0 голосов
/ 13 апреля 2016

Вы можете сделать это, просто добавив псевдоним MAMP php на терминал Apple:

alias phpmamp='/Applications/MAMP/bin/php/php7.0.0/bin/php'

Пример: > phpmamp - v

Теперь вы можете запустить что-то вроде: > phpmamp scriptname.php

Примечание. Это будет применяться только для текущего сеанса терминала.

0 голосов
/ 21 июля 2014

У меня просто была эта проблема, но она появилась только при загрузке определенных страниц (другие страницы работали нормально). Оказалось, что я звонил в MySQL после того, как закрыл соединение с mysql_close(). Итак, как сказал @brucenan: убедитесь, что MySQL работает, когда вы его называете .

0 голосов
/ 02 декабря 2013

Я получил те же ошибки. Mysql работал как отдельное приложение до того, как я запустил phpMyAdmin.

Я просто остановил MySQL затем sudo / Applications / XAMPP / xamppfiles / xampp stop sudo / Applications / XAMPP / xamppfiles / xampp start

Работало нормально

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