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

Я считаю, что я успешно развернул свой (очень простой) сайт на fortrabbit, но как только я подключусь к SSH, чтобы выполнить некоторые команды (такие как php artisan migrate или же php artisan db:seed) Я получаю сообщение об ошибке:

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

В какой-то момент миграция, должно быть, сработала, потому что мои таблицы есть — но это не объясняет, почему это не работает для меня сейчас.

231

Решение

Сообщение об ошибке указывает, что пробное соединение MySQL через сокет (что не поддерживается).

В контексте Laravel (ремесленник) вы, вероятно, хотите использовать другую / правильную среду. Например: php artisan migrate --env=production (или любая другая среда). Увидеть Вот.

104

Другие решения

Ларавелла 4: Измените «хост» в app/config/database.php файл от «localhost» до «127.0.0.1»

Ларавел 5: Измените «DB_HOST» в .env файл от «localhost» до «127.0.0.1»

У меня была точно такая же проблема. Ни одно из вышеперечисленных решений не помогло мне. Я решил проблему, изменив «host» в файле /app/config/database.php с «localhost» на «127.0.0.1».

Не уверен, почему «localhost» не работает по умолчанию, но я нашел этот ответ в похожем вопросе, решенном в посте symfony2. https://stackoverflow.com/a/9251924/1231563

Обновить:
Некоторые люди спрашивали, почему это исправление работает, поэтому я немного изучил эту тему. Кажется, что они используют разные типы соединений, как описано в этом посте https://stackoverflow.com/a/9715164/1231563

Проблема, которая возникла здесь, заключается в том, что «localhost» использует сокет UNIX и не может найти базу данных в стандартном каталоге. Однако «127.0.0.1» использует TCP (Transmission Control Protocol), что, по сути, означает, что он работает через «локальный интернет» на вашем компьютере, будучи гораздо более надежным, чем сокет UNIX в этом случае.

540

У меня та же проблема, и я использую Mac OS X 10.10 Yosemite. Я включил сервер Apache и PHP, который уже поставляется с ОС. Тогда я просто настроил библиотеку mCrypt, чтобы начать. После этого, когда я работал с моделями и БД, я получил ошибку:

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

Причина, которую я нашел, заключается в том, что PHP и MySQL не могут соединиться друг с другом.
Чтобы решить эту проблему, я следую следующие шаги:

  1. Откройте терминал и подключитесь к mysql с помощью:

    mysql -u root -p

  2. Он попросит вас ввести соответствующий пароль. Затем, как только вы получите запрос MySQL, введите следующую команду:

    mysql> show variables like '%sock%'

  3. Вы получите что-то вроде этого:

    +-----------------------------------------+-----------------+
    | Variable_name | Value |
    +-----------------------------------------+-----------------+
    | performance_schema_max_socket_classes | 10 |
    | performance_schema_max_socket_instances | 322 |
    | socket | /tmp/mysql.sock |
    +-----------------------------------------+-----------------+

  4. Сохранить значение последней строки:

    /tmp/mysql.sock

  5. В папке вашего проекта laravel найдите database.php Файл там, где вы настраиваете параметры подключения к БД. в MySQL В конце раздела добавьте следующую строку:

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

  6. У вас должно быть что-то вроде этого:

'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'SchoolBoard',
'username' => 'root',
'password' => 'venturaa',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'unix_socket' => '/tmp/mysql.sock',
),

Теперь просто сохраните изменения и перезагрузите страницу, и она должна работать!
Я надеюсь, что это может быть полезно!

70

Я столкнулся с [PDOException] SQLSTATE[HY000] [2002] No such file or directory ошибка по другой причине. Я только что закончил сборку нового стека LAMP на Ubuntu 12.04 с Apache 2.4.7, PHP v5.5.10 и MySQL 5.6.16. Я переместил свои сайты обратно и запустил их. Но я не смог загрузить свой сайт на базе Laravel 4.2.x из-за [PDOException] выше. Итак, я проверил php -i | grep pdo и заметил эту строку:

pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

Но в моем /etc/my.cnf файл sock находится в /var/run/mysqld/mysqld.sock,

Итак, я открыл свой php.ini и установил значение для pdo_mysql.default_socket:

pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock

Затем я перезапустил Apache и проверил php -i | grep pdo:

pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock

Это исправило это для меня.

44

Ответ @stuyam решил проблему «Нет такого файла или каталога» для меня

Краткий ответ: измените «host» в файле /app/config/database.php с «localhost» на «127.0.0.1»

Но тогда у меня была ошибка «Отказ в соединении». Если у кого-то была такая же проблема, мое решение для этого было обновить файл app / config / local / database.php так, чтобы порт был 8889:

'mysql' => array(
'driver'    => 'mysql',
'host'      => '127.0.0.1',
'port'      => '8889',
'database'  => 'databaseName',
'username'  => 'root',
'password'  => 'root',
'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix'    => '',
),
40

Если вы используете Laravel Homestead, убедитесь, что вы вызываете команды на сервере.

homestead ssh

Затем просто перейдите в нужный каталог и запустите там свою команду.

22

Опция включения Mamp user Разрешить сетевой доступ к MYSQL

введите описание изображения здесь

16

В моем случае у меня не было никаких проблем, я просто забыл запустить службу MySQL …

sudo service mysqld start

14
По вопросам рекламы [email protected]