Doctrine 2命令行工具; MAMP和mysql.sock

时间:2011-09-18 12:07:15

标签: mysql database sockets mamp mysql.sock

我从Wildly Inaccurate抓住了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 个答案:

答案 0 :(得分:4)

MAMP确实使用它自己的mysql套接字,而CLi使用/var/mysql/mysql.sock中的默认套接字。 这可能意味着您运行的是错误的PHP版本(不是MAMP版本,而是默认的MAC OS X版本)。这不是什么大问题,因为它也可以处理你的Doctrine命令行问题。 所以你有几个选择:

  1. 尝试使用MAMP php版本启动CLi工具,将路径放到MAC OS X php版本作为前缀,即

    /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. 在任何MAMP配置文件中查找“/Applications/MAMP//tmp/mysql/mysql.sock”的每一个匹配项,并将其更改为/var/mysql/mysql.sock,以便您实际使用MySQL Socket的默认地址。虽然,我从未测试过这是否有效。