Подтвердить что ты не робот

Ошибка соединения 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

databases.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.

Спасибо за любую помощь.

4b9b3361

Ответ 1

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-адрес или имя локального сервера. Вы также можете указать протокол подключения явно, даже для локального используя опцию --protocol = TCP.

Ответ 2

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

enter image description here

MAMP PRO 3.x
Как указано Kendrick: enter image description here

Ответ 3

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

dsn: 'mysql:host=localhost;dbname=jobeet;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock'

Ответ 4

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

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