Macos Drush无法在MAMP上连接到MySQL?

Macos Drush无法在MAMP上连接到MySQL?,macos,drupal,mamp,drush,Macos,Drupal,Mamp,Drush,我第一次试着为Drush做准备。我用的是马普和山狮。当我在终端中输入'drush'时,我会得到一个命令列表,因此它似乎安装正常 我在MAMP中更改了默认的web目录文件夹。我在web目录的文件夹中有许多Drupal站点。因此,一个站点的url是http://localhost:8888/omega/omegav3/另一个是http://localhost:8888/omega/omegav4/ 通过导航到终端中的site文件夹,我可以运行Drush命令,但是会出现错误。当我下载视图时,它确实正确

我第一次试着为Drush做准备。我用的是马普和山狮。当我在终端中输入'drush'时,我会得到一个命令列表,因此它似乎安装正常

我在MAMP中更改了默认的web目录文件夹。我在web目录的文件夹中有许多Drupal站点。因此,一个站点的url是
http://localhost:8888/omega/omegav3/
另一个是
http://localhost:8888/omega/omegav4/

通过导航到终端中的site文件夹,我可以运行Drush命令,但是会出现错误。当我下载视图时,它确实正确地将模块下载到我的sites/all/modules文件夹中,但是它给了我一些错误。当我尝试启用该模块时,它会给我更多错误,并且无法启用该模块

unknown:omegav3 MYUSERNAME$ cd /Users/MYUSERNAME/Dropbox/sites/omega/omegav3 
unknown:omegav3 MYUSERNAME$ drush dl views
PDO::__construct(): [2002] No such file or directory (trying to connect via           [warning]
unix:///var/mysql/mysql.sock) environment.inc:523
Project views (7.x-3.7) downloaded to sites/all/modules/views.                        [success]
Project views contains 2 modules: views, views_ui.
unknown:omegav3 MYUSERNAME$ 
unknown:omegav3 MYUSERNAME$ drush en views
PDO::__construct(): [2002] No such file or directory (trying to connect via           [warning]
unix:///var/mysql/mysql.sock) environment.inc:523
Command pm-enable needs a higher bootstrap level to run - you will need to invoke     [error]
drush from a more functional Drupal environment to run this command.
The drush command 'en views' could not be executed.                                   [error]
Drush was not able to start (bootstrap) the Drupal database.                          [error]
Hint: This may occur when Drush is trying to:
 * bootstrap a site that has not been installed or does not have a configured
database. In this case you can select another site with a working database setup by
specifying the URI to use with the --uri parameter on the command line. See `drush
topic docs-aliases` for details.
 * connect the database through a socket. The socket file may be wrong or the php-cli
may have no access to it in a jailed shell. See http://drupal.org/node/1428638 for
details.

Drush was attempting to connect to: 
 Drupal version         :  7.23                                             
 Site URI               :  http://default                                   
 Database driver        :  mysql                                            
 Database username      :  root                                             
 Database name          :  omegav3                                          
 Default theme          :  garland                                          
 Administration theme   :  garland                                          
 PHP executable         :  /usr/bin/php                                     
 PHP configuration      :                                                   
 PHP OS                 :  Darwin                                           
 Drush version          :  6.1.0                                            
 Drush configuration    :                                                   
 Drush alias files      :                                                   
 Drupal root            :  /Users/MYUSERNAME/Dropbox/sites/omega/omegav3 
 Site path              :  sites/default                                    
 File directory path    :  sites/default/files                              


unknown:omegav3 MYUSERNAME$ 

这似乎是Drush和MySQL的问题,但我不知道如何解决这个问题。我对命令行非常陌生,以前从未安装过像Drush这样的东西,所以我真的很挣扎

让我们先说我对德鲁什一点也不熟悉。但从MAMP的角度来看,我想我知道这里发生了什么

线路
PDO::_construct():[2002]没有这样的文件或目录(试图通过[warning]连接)
unix:///var/mysql/mysql.sock)environment.inc:523
说明了一切

默认情况下,MAMP在
/Applications/MAMP/tmp/MySQL/MySQL.sock
中创建MySQL套接字,如MAMP启动页面所述。然而,Drush希望套接字位于
var/mysql/mysql.sock

有两种方法可以解决这个问题

  • 停止所有MAMP服务器。编辑文件
    /Applications/MAMP/bin/startMysql.sh
    , 将
    --socket=/Applications/MAMP/tmp/mysql/mysql.sock
    更改为
    --socket=/var/mysql/mysql.sock
    。还有,别忘了编辑stopMysql.sh。这告诉MAMP在下次启动Mysql服务器时将套接字存储在其他位置

  • 创建一个从
    /var/mysql/mysql.sock
    /Applications/MAMP/tmp/mysql/mysql.sock
    的符号链接,有关符号链接的更多信息,请参阅文章。要做到这一点,需要运行MAMP,因为套接字文件是动态创建的


  • 祝你好运

    作为回答#1的另一种选择,我建议您将命令行MySQL改为使用MAMP——这确保了当您从命令行访问MySQL时,它也能正常工作。编辑~/.bash_配置文件并添加以下行:

    alias mysql='/Applications/MAMP/Library/bin/mysql'
    
    这对我有用

    sudomkdir/var/mysql
    sudo ln-s/Applications/MAMP/tmp/mysql/mysql.sock/var/mysql/mysql.sock

    我也遇到了同样的问题-解决这个问题的方法是将settings.php中的数据库主机从“localhost”改为“127.0.0.1”。

    对我来说,mysql bin不存在

    sudo ln -s /Applications/MAMP/Library/bin/mysql /usr/bin/mysql
    

    为我修正了它。

    这应该被视为@chrisblomm答案的补充,而不是“替代品”。这是一个好主意,但并不能解决问题-至少对我来说不是这样。这是可行的,但对于El Capitan mac osx或更高版本,这应该是
    sudo ln-s/Applications/MAMP/Library/bin/mysql/usr/local/bin/mysql
    ,而且我还必须在Chrisblomm答案
    sudo ln-s/Applications/MAMP/tmp/mysql/mysql.sock/var/mysql/mysql.sock中做sock符号链接