蛋糕PHP不建设模型

问题描述:

我创建了我的数据库,并使用cake bake my_project来创建我的项目,现在当我在我的项目目录中尝试cake bake all窗体时,出现与Mysql有关的错误。当我从浏览器查看我的项目时,它全部亮起绿色,包括连接到数据库。蛋糕PHP不建设模型

Warning Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in [/Users/billy/Documents/projects/cakephp/lib/Cake/Model/Datasource/Database/Mysql.php, line 160] 

关于这个错误是关于什么的任何想法?


编辑:添加了相关的配置细节(PHP --info | grep按MySQL的)

我真的不知道要寻找在这里是什么,但也许有人做...

$ php --info |grep mysql 
Configure Command => '/var/tmp/apache_mod_php/apache_mod_php-53.3.1~2/php/configure' '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--disable-dependency-tracking' '--sysconfdir=/private/etc' '--with-apxs2=/usr/sbin/apxs' '--enable-cli' '--with-config-file-path=/etc' '--with-libxml-dir=/usr' '--with-openssl=/usr' '--with-kerberos=/usr' '--with-zlib=/usr' '--enable-bcmath' '--with-bz2=/usr' '--enable-calendar' '--with-curl=/usr' '--enable-exif' '--enable-ftp' '--with-gd' '--with-jpeg-dir=/BinaryCache/apache_mod_php/apache_mod_php-53.3.1~2/Root/usr/local' '--with-png-dir=/BinaryCache/apache_mod_php/apache_mod_php-53.3.1~2/Root/usr/local' '--enable-gd-native-ttf' '--with-ldap=/usr' '--with-ldap-sasl=/usr' '--enable-mbstring' '--enable-mbregex' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-mysql-sock=/var/mysql/mysql.sock' '--with-iodbc=/usr' '--enable-shmop' '--with-snmp=/usr' '--enable-soap' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--with-xmlrpc' '--with-iconv-dir=/usr' '--with-xsl=/usr' '--enable-zend-multibyte' '--enable-zip' '--with-pcre-regex=/usr' 
mysql 
Client API version => mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $ 
mysql.allow_local_infile => On => On 
mysql.allow_persistent => On => On 
mysql.connect_timeout => 60 => 60 
mysql.default_host => no value => no value 
mysql.default_password => no value => no value 
mysql.default_port => no value => no value 
mysql.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock 
mysql.default_user => no value => no value 
mysql.max_links => Unlimited => Unlimited 
mysql.max_persistent => Unlimited => Unlimited 
mysql.trace_mode => Off => Off 
mysqli 
Client API library version => mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $ 
mysqli.allow_local_infile => On => On 
mysqli.allow_persistent => On => On 
mysqli.default_host => no value => no value 
mysqli.default_port => 3306 => 3306 
mysqli.default_pw => no value => no value 
mysqli.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock 
mysqli.default_user => no value => no value 
mysqli.max_links => Unlimited => Unlimited 
mysqli.max_persistent => Unlimited => Unlimited 
mysqli.reconnect => Off => Off 
mysqlnd 
mysqlnd => enabled 
Version => mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $ 
PDO drivers => mysql, sqlite, sqlite2 
pdo_mysql 
Client API version => mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $ 
pdo_mysql.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock 

编辑:更多信息

我尝试了@ 0k32的建议,但不幸的是它不适用于我。我从我的XAMPP文件夹软连接到/usr/bin/php,并检查它是与which php正确的。然后我做了php --info | grep sock,并得到:

MYSQL_SOCKET => /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 
mysql.default_socket => /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock => /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 
MYSQLI_SOCKET => /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 
mysqli.default_socket => /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock => /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 

这似乎表明,正确的MySQL版本被激活。我仍然得到完全相同的错误。

我认为这个问题可能会出现,因为Apache的php模块和命令行php使用不同的配置文件(php.ini)。这些配置中的mysql连接的默认设置可能有所不同。 比较phpinfo()从命令行输出的apache和php --info

更新:

你的情况,看来你是在MacOS和使用MAMP/MAMP PRO。我也是。我也有同样的问题。 我的解决方案非常简单。我取代默认的PHP CLI二进制有符号链接MAMP的PHP程序:

$ sudo mv /usr/bin/php /usr/bin/php_default 
$ sudo ln -s /Applications/MAMP/bin/php/php5.3.6/bin/php /usr/bin/php 

甲基苯丙胺的PHP是通过/Applications/MAMP/tmp/mysql/mysql.sock连接到MySQL默认和MacOS的默认命令行PHP是试图使用/var/mysql/mysql.sock

无论如何,我认为这是一个很好的做法,使用相同的配置为web和cli的php。

更新:

一个聪明的解决方案是不是要取代默认的PHP但只是为了MAMP的PHP二进制文件添加到PATH路径。所以在你的~/.bash_profile

export PATH=/Applications/MAMP/bin/php/php5.3.6/bin:$PATH 

如果需要修正它。 然后重新打开终端或执行此操作:source ~/.bash_profile。然后你可以通过执行which php来检查你正在使用哪个php。它应该指向MAMP的php。

+0

我在通过在虚拟机中安装Ubuntu服务器来获得答案之前解决了这个问题,但我宁愿让事情像你一样工作。我会放弃这一点。谢谢〜) – 2012-03-29 10:18:16

+0

我使用XAMPP,我不知道MAMP是什么,但我假设我使用XAMPP的Mac版本,因为它是交叉平台。 – 2012-03-29 10:18:52

+0

我已经更新了我的答案。 – ok32 2012-03-29 16:02:18