Ошибка соединения 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.
Спасибо за любую помощь.
Ответы
Ответ 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'