Cakephp 不要构建模型

Cakephp 不要构建模型,cakephp,Cakephp,我已经创建了我的数据库,并使用cake bake my_project创建了我的项目,现在当我在我的项目目录中尝试cake bake all表单时,我得到了一个与Mysql相关的错误。当我从浏览器查看我的项目时,它全部亮起绿色,包括连接到数据库 Warning Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in [/U

我已经创建了我的数据库,并使用
cake bake my_project
创建了我的项目,现在当我在我的项目目录中尝试
cake bake all
表单时,我得到了一个与Mysql相关的错误。当我从浏览器查看我的项目时,它全部亮起绿色,包括连接到数据库

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文件夹中的php软链接到
/usr/bin/php
,并用
哪个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连接的默认设置在这些配置中可能有所不同。 比较apache的
phpinfo()
输出和命令行的
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
默认情况下,MAMP的php通过
/Applications/MAMP/tmp/MySQL/MySQL.sock
连接到MySQL,MacOS的默认命令行php尝试使用
/var/MySQL/MySQL.sock

无论如何,我认为在web和cli中使用相同的php和相同的配置是一个很好的实践

更新:

更聪明的解决方案不是替换默认的php,而是将MAMP的php二进制文件的路径添加到
路径中。因此,在您的
~/.bash\u配置文件中:

export PATH=/Applications/MAMP/bin/php/php5.3.6/bin:$PATH
如果需要,请更正它。
然后重新打开终端或执行以下操作:
source~/.bash\u profile
。然后,您可以通过执行
哪个php
来检查您正在使用哪个php。它应该指向MAMP的php。

在得到您的答案之前,我通过在虚拟机中安装ubuntu服务器解决了这个问题,但我更愿意让事情像您一样工作。我要试一试。谢谢,~)我正在使用XAMPP,我不知道MAMP是什么,但我假设我使用的是Mac版本的XAMPP,因为它是cros平台。