Я считаю, что я успешно развернул свой (очень простой) сайт на fortrabbit, но как только я подключаюсь к SSH для выполнения некоторых команд (например, php artisan migrate
или php artisan db:seed
), я получаю сообщение об ошибке:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
В какой-то момент миграция, должно быть, сработала, потому что мои таблицы есть - но это не объясняет, почему это не работает для меня сейчас.
Ответы:
Сообщение об ошибке указывает, что пробное соединение MySQL через сокет (что не поддерживается).
В контексте Laravel (ремесленник) вы, вероятно, хотите использовать другую / правильную среду. Например:
php artisan migrate --env=production
(или любая другая среда). Смотрите здесь .источник
У меня была точно такая же проблема. Ни одно из вышеперечисленных решений не помогло мне. Я решил проблему, изменив «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 в этом случае.
источник
localhost
не работает и127.0.0.1
работает ??A Unix socket file is used if you do not specify a host name or if you specify the special host name localhost.
dev.mysql.com/doc/refman/5.7/ru/can-not-connect-to-server.htmlУ меня та же проблема, и я использую Mac OS X 10.10 Yosemite. Я включил сервер Apache и PHP, который уже поставляется с ОС. Тогда я просто настроил библиотеку mCrypt, чтобы начать. После этого, когда я работал с моделями и БД, я получил ошибку:
Причина, которую я нашел, заключается в том, что PHP и MySQL не могут соединиться друг с другом. Чтобы решить эту проблему, я следую следующие шаги:
Откройте терминал и подключитесь к mysql с помощью:
Он попросит вас ввести соответствующий пароль. Затем, как только вы получите запрос MySQL, введите следующую команду:
Вы получите что-то вроде этого:
Сохраните значение последней строки:
В
laravel
папке вашего проекта найдите файл database.php, в котором вы конфигурируете параметры подключения к БД. В разделе mysql добавьте следующую строку в конце:У вас должно быть что-то вроде этого:
Теперь просто сохраните изменения и перезагрузите страницу, и она должна работать!
источник
/Applications/MAMP/tmp/mysql/mysql.sock
Я столкнулся с
[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
и заметил эту строку:Но в моем /etc/my.cnf файл sock фактически находится в
/var/run/mysqld/mysqld.sock
.Итак, я открыл свой php.ini и установил значение для
pdo_mysql.default_socket
:Затем я перезапустил apache и проверил
php -i | grep pdo
:Это исправило это для меня.
источник
Ответ @stuyam решил проблему «Нет такого файла или каталога» для меня
Но тогда у меня была ошибка «Отказ в соединении». Если у кого-то возникла такая же проблема, я решил обновить файл app / config / local / database.php, чтобы порт был 8889:
источник
'port' => '33060'
но этот ответ привел меня туда!Если вы используете Laravel Homestead, убедитесь, что вы вызываете команды на сервере.
Затем просто перейдите в нужный каталог и запустите там свою команду.
источник
source ~/.zshrc
2.homestead up --provision
3.homestead ssh
vagrant ssh
в моем случаеВ моем случае у меня не было никаких проблем, просто забыл запустить службу MySQL ...
источник
Опция включения Mamp user Разрешить сетевой доступ к MYSQL
источник
Добавьте путь mysql.sock в файл database.php, как показано ниже
Eample
источник
Он работал после того, как я меняю от
DB_HOST=localhost
кDB_HOST=127.0.0.1
в .env файлеисточник
localhost
не работает?Это потому, что PDO обрабатывает хост localhost специально:
(с http://php.net/manual/en/ref.pdo-mysql.connection.php )
Изменение localhost на 127.0.0.1 «заставит» использовать TCP.
Примечание: mysqli_connect отлично работает с localhost.
источник
Опираясь на ответ @dcarrith ...
Вместо того, чтобы редактировать файлы конфигурации, я создал псевдоним в месте, которое ищет PHP, который соединяется с настоящим mysql.sock. ( источник )
Просто запустите эти две команды (перезагрузка не требуется):
источник
Шаг 1
Найдите путь к вашему unix_socket, для этого просто запустите
netstat -ln | grep mysql
Вы должны получить что-то вроде этого
Шаг 2
Возьми это и добавить его в UNIX_SOCKET парах
Надеюсь, поможет !!
источник
Я работаю на MAMP Pro, и у меня возникла подобная проблема при попытке миграции (создание таблиц БД). Пробовал несколько из упомянутых предложений, но не сделал это для меня.
Итак, просто (после часа поиска в Google) я добавил две вещи в /config/database.php.
Работает нормально сейчас!
источник
Проверьте свой порт тщательно. В моем случае это было 8889, и я использую 8888. измените "DB_HOST" с "localhost" на "127.0.0.1" и наоборот
источник
У меня были эти проблемы, когда я запускал свое приложение, используя Docker-контейнеры.
Решение было помещено имя контейнера службы MySQL, который я использовал в
docker_compose.yml
DB_HOST. В моем случае это былоdb
:Надеюсь, поможет.
источник
Начиная с Laravel 5 имя пользователя и пароль базы данных помещаются в файл .env, который существует в каталоге проекта, например
Как вы можете видеть, эти переменные окружения переопределяют здесь строки 'forge', поэтому их изменение не имеет никакого эффекта:
Более подробная информация находится здесь https://mattstauffer.co/blog/laravel-5.0-environment-detection-and-environment-variables
источник
Я столкнулся с этой проблемой при запуске PHPUnit в Elixir / Gulp и Homestead в качестве моей Vagrant среды.
В моем случае я редактировал .env файл из
DB_HOST=localhost
вDB_HOST=192.168.10.10
котором192.168.10.10
является IP моего Vagrant / Homestead хозяина.источник
Попытайтесь подключиться к localhost:
Попытайтесь подключиться к 127.0.0.1:
ОК, просто закомментируйте / удалите следующий параметр из my.cnf (в OS X 10.5:),
/opt/local/etc/mysqlxx/my.cnf
чтобы получить:Конечно, остановитесь и запустите MySQL Server.
источник
У меня были похожие проблемы с доступом к моему веб-сайту Drupal. Я исправил это, открыв командную строку и перезапустив мой сервер MySQL или службу:
Это должно работать. Если это не так, перезапустите ваш локальный веб-сервер:
Этого должно быть достаточно. Надеюсь, что это работает и для других сред. Обратите внимание, что эти команды обычно требуют привилегий суперпользователя.
источник
Если вы используете Laravel Homestead, вот настройки
(включая Vagrant-Virtual Machine)
.bash-профиль
database.php
Терминал
источник
Если кто-то все еще ищет ответ, просто проверьте файл .env. По какой-то причине laravel создала файл .env.example, поэтому все эти ответы у меня не сработали. Я исправил проблему, переименовав .env.example в .env
источник
Это случилось со мной, потому что MySQL не работал. MySQL не запускался, потому что у меня отсутствовал
/usr/local/etc/my.cnf.d/
каталог.Это требовалось моим
/usr/local/etc/my.cnf
конфигурационным файлом как глобальный include (include /usr/local/etc/my.cnf.d/*.cnf
).Запуск
mkdir /usr/local/etc/my.cnf.d
, а затем запуск MySQL исправили проблему.источник
В моем случае я запускал php artisan migrate на своем терминале Mac, когда мне нужно было запустить ssh в vagrant и запустить его оттуда. Надеюсь, что кому-то помогает головная боль.
источник
У меня была та же проблема с использованием имени службы Docker и MySQL
db
в файле docker_compose.yml:Я добавил следующее в
.env
файл:Вы также должны убедиться, что ваш хост доступен для обнаружения из приложения php.
Это было потому, что PHP не выяснил, какой хост использовать для подключения.
источник
При использовании VirtualMachine убедитесь, что вы подключились к этой машине, перейдите в папку приложения и оттуда вызовете команду php artisan migrate.
источник
В любом случае, я бы просто использовал
вместо того
для моей установки личинки кузницы, используя усадьбу. Я предполагаю, что это означало, что сайт обслуживался, но сервер MySQL никогда не загружался. Когда я использовал последнюю команду, чтобы запустить мой бродячий ящик, ошибка исчезла.
источник
Все эти ответы кажутся тяжелыми ...
Я только что создал
.env
файл; отредактировал мойbootstrap/app.php
файл и раскомментировал следующую строку ...Dotenv::load(__DIR__.'/../');
Надеюсь, это поможет кому-то
источник
Для тех, кто пытается создать новое соединение БД не на laravel, а наткнулся здесь, ища ответы для запуска PDO из Терминала. Это поможет вам. И вы можете изменить его, чтобы он работал лучше для вас.
Надеюсь, поможет!
источник
В моем случае мне пришлось удалить папку bootstrap / cache и повторить попытку.
Мой cenario был после миграции сервера.
источник