SQLSTATE [HY000] [2002] Нет такого файла или каталога [дубликата]

20

Я пытаюсь запустить проект laravel на OS X. Я установил MySql с homebrew. Я попробовал поискать, почему я получаю эту ошибку:

SQLSTATE[HY000] [2002] No such file or directory

когда я пытаюсь сделать

php artisan migrate

И большинство ответов, которые я вижу, говорят, что php и MySql не могут общаться друг с другом. Я пытался увидеть, где я поступил неправильно, так как я думаю, что я следил за предыдущими сообщениями об этом, и он все еще не работает. Я создал страницу, которая просто делает это:

<?php
    phpinfo();
?>

И я вижу такие вещи: В области "Настройка" я вижу:

'--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--enable-pcntl' '--enable-zend-signals' '--enable-dtrace'

загруженный файл конфигурации:

/usr/local/etc/php/5.4/php.ini

Если я ls /tmp, я вижу mysql.sock.

В этом файле php.ini я устанавливаю следующие строки: pdo_mysql.default_socket =/TMP/mysql.sock mysql.default_socket =/tmp/mysql.sock mysqli.default_socket =/tmp/mysql.sock

И затем в /usr/local/Cellar/mysql/ 5.6.16/my.cnf, я добавил следующую строку:

socket = /tmp/mysql.sock

Я перезапустил apache, а также проверил mysql. Я не видел никаких других советов, кроме соединения php и mysql. Я думаю, что есть две версии php в моей системе, потому что когда я установил mcrypt или что-то еще, что я не могу вспомнить, он установил другую версию php. Но когда я смотрю вывод phpinfo, я редактирую соответствующий файл php.ini. Я не знал, есть ли еще одна вещь, которую мне не хватает. Есть предположения? Благодаря

  • 0
    я только что получил эту ошибку, пытаясь включить «общий журнал запросов mysql» для отладки некоторого кода доктрины / php, с которым я работаю.
  • 0
    Мне просто нужно было включить расширение mysqli.so в php.ini
Теги:

7 ответов

6
Лучший ответ

После поиска я нашел этот пост:

Настройка Laravel при ошибке переноса mac php artisan: нет такого файла или каталога

Как только я добавил

'unix_socket' => '/tmp/mysql.sock’,

к моему database.php в массиве mysql, он сработал. Не уверен точно, почему это работает, но это так.

39

У меня была аналогичная ошибка. Я использую MAMP и то, что решило мою проблему:

  • создание символической ссылки в:/var/mysql (создать каталог, если он не существует)
  • cd/var/mysql && & sudo ln -s/Applications/MAMP/tmp/mysql/mysql.sock
  • 7
    Это исправило это для меня. Я не использую MAMP, поэтому это был cd / var / mysql && sudo ln -s /tmp/mysql.sock
  • 0
    Рад, что это помогло!
Показать ещё 6 комментариев
7

Для пользователей, которые ищут решение на XAMPP (протестировано и работает в Mac OS X),

Откройте терминал и создайте символическую ссылку:

sudo mkdir /var/mysql
cd /var/mysql
sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

Другие решения, описанные здесь: http://pravams.com/2011/05/26/magento-pdo-exception/

  • 1
    Здравствуйте, я попробовал это, но не повезло, я получаю ошибку SQLSTATE[HY000] [2002] Connection refused . Я использую тонкий php framework, xampp на Mac OS. Есть идеи, чтобы это исправить?
  • 3
    Попробуйте использовать «localhost» вместо «127.0.0.1» или наоборот при подключении к вашей базе данных, чтобы увидеть, помогает ли это.
Показать ещё 3 комментария
4

Я нашел PHP на CentOS 6, построенный с mysql.default_socket=/var/lib/mysql/mysql.sock, но по какой-то причине pdo_mysql.default_socket=/tmp/mysql.sock, которого не существует. Построение его с помощью --with-mysql-sock=/var/lib/mysql/mysql.sock должно заставлять обе быть одинаковыми.

Альтернативно отредактируйте php.ini, чтобы содержать:

pdo_mysql.default_socket="/var/lib/mysql/mysql.sock"

... или ваше правильное расположение гнезда, конечно.

3

i исправил это так. Просто добавьте строку. в проекте laravel APP = > Config = > database.php обновить Подключения = > MySQL после строгого добавления ниже строки

'unix_socket' => "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock"

Пример: -

'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
            'unix_socket' => "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock"
        ],
0

Найден решение для пользователя Ampps:
У меня была такая же проблема, и я много раз искал, но не смог решить проблему, пока не посмотрел на мой конфигурационный файл MySql. В моем конфигурационном файле сокет находился в строке 21, и путь был "/Applications/AMPPS/var/mysql.sock"

В приложении Ampps перейдите на вкладку MySql и нажмите кнопку конфигурации.

Вы также можете найти файл конфигурации в папке "/Applications/AMPPS/mysql/etc"

Так просто я добавил 'unix_socket' = > '/Applications/AMPPS/var/mysql.sock',
к моему database.php в массиве mysql, и это сработало для меня.
После строки хоста. Я тестировал с localhost и 127.0.0.1, и оба работали
Надеюсь, он тоже работает для вас.

0

Это случилось со мной из ниоткуда, мое приложение (Laravel) вчера отлично работало и сегодня ушло с этой ошибкой (SQLSTATE [HY000] [2002] Нет такого файла или каталога).

После проверки того, что мой файл конфигурации не был поврежден, я подключился к моей панели управления (я использую VPS) и перезапустил сервер MySQL. Это сделало трюк, все снова в сети.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню