Ошибка подключения PDO при использовании symfony и MAMP
Получение ошибки PDO при попытке выполнить
php symfony doctrine:insert-sql
Ошибка, которую я получаю:
Warning: PDO::__construct(): [2002] Connection refused (trying to connect via tcp://127.0.0.1:3306) in /Users/johannes/Programmering/PHP/htdocs/symfony/sfprojects/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 470
Базы данных.yml
all: doctrine: class: sfDoctrineDatabase param: dsn: mysql:host=127.0.0.1;dbname=jobeet; username: root password: root
Выполнение mysql -u root -p jobeet
с "root" в качестве пароля дает мне доступ, так что никаких проблем нет. И да, mysql, который я запускаю, принадлежит MAMP.
Спасибо за любую помощь.
4 answers
MAMP по умолчанию не разрешает TCP-соединения. Вы можете либо включить его, либо использовать розетки.
Изменение вашего dsn, как предлагает @Tom, должно устранить ваши проблемы. Как ни странно, но с помощью localhost вместо 127.0.0.1 делает так, что mysql подключается через сокеты.
Http://dev.mysql.com/doc/refman/5.0/en/connecting.html :
В Unix программы MySQL обрабатывают имя хоста localhost особым образом, таким образом , который, вероятно, отличается от что вы ожидайте по сравнению с другими сетевыми программами. Для подключения к локальному хосту программы MySQL пытаются подключиться к локальному серверу с помощью Файл сокета Unix. Это происходит даже в том случае, если для указания номера порта используется опция --port или -P. Чтобы убедиться, что клиент устанавливает соединение TCP/IP с локальным сервером, используйте --host или -h , чтобы указать значение имени хоста 127.0.0.1 или IP-адрес или имя локального сервера. Вы также можете указать протокол подключения явно, даже для локального хоста, используя параметр --protocol=TCP.
MAMP PRO 2.х
Я смог решить эту и многие подобные проблемы, просто сняв флажок "Разрешить только локальный доступ" в префиксах MySQL на панели управления MAMP.
MAMP PRO 3.х
Как заявил Кендрик:
У меня была та же ошибка при попытке построить свои таблицы в Symfony и с использованием MAMP. Я исправил проблему, изменив свою строку dsn в базах данных.файл yml, следующий:
dsn: 'mysql:host=localhost;dbname=jobeet;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock'
Выглядит правильно. Здесь был бы точный эквивалент из рабочей базы данных.я использую yml, на случай, если он будет полезен:
dsn: 'mysql:host=localhost;dbname=jobeet'