Ошибка подключения к PDO при использовании Symfony и MAMP - PullRequest
11 голосов
/ 24 января 2011

Получение ошибки 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

database.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 ]

13 голосов
/ 27 августа 2012

MAMP PRO 2.x
Мне удалось решить эту и многие другие подобные проблемы, просто сняв флажок «Разрешить только локальный доступ» в настройках MySQL на панели управления MAMP.

enter image description here

MAMP PRO 3.x
Как указано Кендрик : enter image description here

7 голосов
/ 25 января 2011

MAMP по умолчанию не разрешает TCP-соединения. Вы можете включить его или использовать розетки.

Изменение вашего DSN, как предлагает @Tom, должно исправить ваши проблемы. Как это ни странно, но использование localhost вместо 127.0.0.1 делает MySQL подключением через сокеты.

http://dev.mysql.com/doc/refman/5.0/en/connecting.html:

В Unix программы MySQL обрабатывают хост Назовите localhost специально, таким образом, это, вероятно, отличается от того, что вы ожидать по сравнению с другими сетевыми программы. Для подключения к localhost, программы MySQL пытаются подключиться к локальному серверу с помощью Файл сокета Unix. Это происходит даже если опция --port или -P предоставляется укажите номер порта. Чтобы убедиться, что клиент устанавливает соединение TCP / IP на локальный сервер используйте --host или -h указать значение имени хоста 127.0.0.1, или IP-адрес или имя локального сервера. Вы также можете указать протокол подключения явно, даже для localhost, используя параметр --protocol = TCP.

3 голосов
/ 18 мая 2011

У меня была такая же ошибка при попытке создать мои таблицы в Symfony и использовании MAMP.Я исправил эту проблему, изменив строку dsn в файле database.yml следующим образом:

dsn: 'mysql:host=localhost;dbname=jobeet;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock'
1 голос
/ 25 января 2011

выглядит правильно.Вот точный эквивалент из работающего database.yml, который я использую, на случай, если он пригодится:

dsn: 'mysql:host=localhost;dbname=jobeet'
...