我从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
答案 0 :(得分:4)
MAMP确实使用它自己的mysql套接字,而CLi使用/var/mysql/mysql.sock中的默认套接字。 这可能意味着您运行的是错误的PHP版本(不是MAMP版本,而是默认的MAC OS X版本)。这不是什么大问题,因为它也可以处理你的Doctrine命令行问题。 所以你有几个选择:
尝试使用MAMP php版本启动CLi工具,将路径放到MAC OS X php版本作为前缀,即
/Applications/MAMP/bin/php5.3/bin/php ./doctrine orm:schema-tool:create
只需设置一个从/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
在任何MAMP配置文件中查找“/Applications/MAMP//tmp/mysql/mysql.sock”的每一个匹配项,并将其更改为/var/mysql/mysql.sock,以便您实际使用MySQL Socket的默认地址。虽然,我从未测试过这是否有效。