2

我从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
4

1 回答 1

4

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

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

    /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 套接字的默认地址. 虽然,我从未测试过这是否有效。

于 2011-09-27T11:53:28.033 回答