Инструмент командной строки Doctrine 2; MAMP и mysql.sock - PullRequest
2 голосов
/ 18 сентября 2011

Я взял CI2 / Doctrine2 с Дико неточно . Я пытаюсь начать использовать его, но прежде чем приступить к работе, я хотел убедиться, что все работает. Однако, когда я пытаюсь использовать инструмент командной строки, я сталкиваюсь со следующей ошибкой:

$ ./doctrine orm:schema-tool:create

ATTENTION: This operation should not be executed in a production environment.

Creating database schema...

Warning: PDO::__construct(): [2002] Socket operation on non-socket (trying to connect via unix:///var/mysql/mysql.sock) in /Users/joris/Desktop/ci2_starter/application/libraries/Doctrine/DBAL/Driver/PDOConnection.php on line 36



  [PDOException]                                         
  SQLSTATE[HY000] [2002] Socket operation on non-socket  



orm:schema-tool:create [--dump-sql]

Я запускаю это на правильно установленном MAMP Pro 2.0.1; Я не совсем уверен, что делать, чтобы исправить эту ошибку .. Я не очень хорошо разбираюсь во внутренней (фоновой) работе MySQL. Может кто-нибудь прояснить это для меня? Большое спасибо.

Обновление:

MacBook-Pro-van-Joris-Ooms:~ joris$ sudo find / -name 'mysql.sock'
Password:
/Applications/MAMP/tmp/mysql/mysql.sock
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/private/var/mysql/mysql.sock
/private/var/mysql/mysql.sock/mysql.sock

1 Ответ

4 голосов
/ 27 сентября 2011

MAMP использует свой собственный сокет mysql, а CLi использует сокет по умолчанию в /var/mysql/mysql.sock.Это может означать, что вы используете неправильную версию PHP (не MAMP, а версию MAC OS X по умолчанию).Ничего страшного, так как он может справиться и с вашими проблемами командной строки Doctrine.Таким образом, у вас есть несколько вариантов:

  1. попробуйте использовать версию MAMP php для запуска инструмента CLi, указав путь к вашей версии php MAC OS X в качестве префикса, т.е.

    / Applications / MAMP / bin / php5.3 / bin / php ./doctrine orm: schema-tool: create

  2. просто установите ссылку из / var / mysql / mysql.sock к фактическому файлу Socket, который должен находиться в /Applications/MAMP//tmp/mysql/mysql.sock. Таким образом, вы переходите к терминалу, когда ваш MAMP выполняет тип (вам будет предложено ввести пароль):

    sudo ln -s /Applications/MAMP//tmp/mysql/mysql.sock /var/mysql/mysql.sock

  3. Найти каждое вхождение "/ Applications / MAMP//tmp/mysql/mysql.sock "в любом из ваших файлов конфигурации MAMP и измените его на /var/mysql/mysql.sock, так что вы фактически используете адрес по умолчанию для MySQL Socket.Хотя я никогда не проверял, работает ли это.

...