6

Drush is running on MAMP, PHP 5.6.6.

Inside /Volumes/Doxy/htdocs/omegadoen/sites/all/themes/omega

I run:

drush omega-wizard

I get:

Additional uncaught exception thrown while handling exception.

Original

PDOException: SQLSTATE[HY000] [2002] No such file or directory in drupal_is_denied() (line 1917 of /Volumes/Doxy/htdocs/omegadoen/includes/bootstrap.inc).

Additional

PDOException: SQLSTATE[HY000] [2002] No such file or directory in _registry_check_code() (line 3169 of /Volumes/Doxy/htdocs/omegadoen/includes/bootstrap.inc).


Drush command terminated abnormally due to an unrecoverable error. [error]

What now?

23

For simplicity check drush status with verbose and debug parameters:

drush -vd status

If you're using different profile, don't forget to include it as -l http://foo.

If you still have a problem, it's an issue with bootstrapping your Drupal.

First check your SQL connection if it's working:

drush sql-cli

If it does not, check your db credentials in your Drupal settings file.

If it does, there is a problem with SQL connection through the socket.

So in MAMP you've to do:

  1. Check value of socket in my.cnf (menu: File/Edit Template), it's usually set as:

    socket      = /Applications/MAMP/tmp/mysql/mysql.sock
    
  2. Double check if your MySQL can find this file:

    $ mysql_config --socket
    /Applications/MAMP/tmp/mysql/mysql.sock
    
  3. Double check if your PHP has the right mysql.sock set-up:

    $ php -i | grep mysql.default_socket
    
  4. Link the socket into your /tmp and see if that helps:

    sudo ln -s /Applications/MAMP/tmp/mysql /var/mysql
    
  5. Test the socket file:

    mysql --socket=/var/mysql/mysql.sock
    
  6. Still the problem? Add the following setting into your $databases:

    $databases['default']['default'] = array(
      // ...
      'unix_socket' => '/var/mysql/mysql.sock',
    

Troubleshooting

  • Try: drush sqlq "SELECT @@version_comment LIMIT 1"
  • Try: drush ev "Database::getConnection('default', 'default');"
  • Try: mysql --socket=$(php -r 'echo ini_get("mysql.default_socket");')
  • Check permissions on Unix socket: stat $(mysql_config --socket)
  • Debug: on OS X with sudo dtruss -fn mysqld, on Linux with strace
  • Debug with XDebug:

    • echo '<?php xdebug_start_trace("/tmp/foo.log");' > init.php
    • drush -c init.php ev 'Database::getConnection("default", "default");'
    • or set xdebug.show_exception_trace=1 in your xdebug.ini
  • Check MySQL settings:

    • echo '<?php phpinfo();' > init.php
    • drush -c init.php ev 'Database::getConnection("default", "default");' | grep mysql
  • Run: php -r "new PDO('mysql:host=localhost;port=3306;charset=utf8;dbname=dbname', 'root', 'root');"

  • Try to rebuilt your registry
  • 3
    wow. this is a very complete answer. Surprised there are not more upvotes on this. Thanks. – JamesWilson Aug 17 '16 at 3:19
  • 1
    I'd upvote this answer on all of the other "drush" "mamp" "mysql" related questions here on stack exchange, just so its easier to find... many of the other ones have really incomplete answers. – JamesWilson Aug 17 '16 at 16:31
  • So I don't have this file /Applications/MAMP/tmp/mysql/mysql.sock nor this file /var/mysql/mysql.sock using MAMP. I can connect to phpMyAdmin no problem though..weird. Whenever I try drush cr I get the sql connection issue. I can drush sql-sync just fine though... – Ronnie Oct 20 '16 at 19:11
  • 1
    Absolutely brilliant answer. This is a very complete answer on a topic that is really obfuscated partly because of different set ups people are using and also a lack of understanding of how mysql works under the hood (at least on my behalf). – Andrew Welch Dec 8 '16 at 18:22
  • 1
    coming back nearly 3 years later with a new machine and this again solved my problem. I was wrong in my original comment from 2016. tmp is a hidden folder -_- I wish I could upvote again – Ronnie May 22 at 4:14

Not the answer you're looking for? Browse other questions tagged or ask your own question.