蛋糕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。
我在通过在虚拟机中安装Ubuntu服务器来获得答案之前解决了这个问题,但我宁愿让事情像你一样工作。我会放弃这一点。谢谢〜) – 2012-03-29 10:18:16
我使用XAMPP,我不知道MAMP是什么,但我假设我使用XAMPP的Mac版本,因为它是交叉平台。 – 2012-03-29 10:18:52
我已经更新了我的答案。 – ok32 2012-03-29 16:02:18