J'ai installé Drush pour la première fois (il peut donc s'agir d'une erreur de configuration) et j'essaie de mettre à jour vers la dernière version principale de Drupal.
Drush me donne cette erreur - je suis sur une boîte OSX.
dev5:clientnamedirectory my.name$ drush pm-update projects drupal-7.25
<h1>Additional uncaught exception thrown while handling exception.</h1>
<h2>Original</h2><p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in drupal_get_installed_schema_version() (line 155 of /Users/my.name/Sites/proface/includes/install.inc).</p>
<h2>Additional</h2>
<p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in system_list() (line 165 of /Users/my.name/Sites/clientnamedirectory/includes/module.inc).</p><hr />
Drush command terminated abnormally due to an unrecoverable error.
Réponses:
C'est ainsi que je l'ai résolu sur macOS:
Source: Travailler avec Drush sur Mamp .
la source
Dans votre configuration de base de données dans le fichier settings.php pour le site Drupal, essayez de changer l'hôte en 127.0.0.1 au lieu de localhost.
remplacer la valeur par défaut: 'host' => 'localhost',
avec: 'host' => '127.0.0.1',
J'ai eu cette erreur sur OS X XAMPP, mais la solution devrait également s'appliquer ici. Comme Clive l'a mentionné, c'est un problème de connexion MySQL. Ce post en a plus sur le problème sous-jacent.
la source
Explication
La PDOException - erreur 2002 signifie que votre drush ne peut pas se connecter au serveur de base de données local MySQL via le fichier socket (par exemple
/tmp/mysql.sock
) tel que configuré dans votrephp.ini
.Ce n'est pas vraiment lié à
drush
lui-même, c'est votre configuration PHP et cette erreur peut être reproduite par:Réparer
Si votre MySQL fonctionne correctement, assurez-vous que ces deux fichiers:
mysql_config --socket
ou:
mysqladmin variables | grep socket
php -i | grep -w default_socket
ou:
php -r 'phpinfo();' | grep -w default_socket
correspondant et pointe vers le même fichier et ils existent tous les deux.
Sinon, vérifiez lequel est correct en:
puis résolvez le problème par l'une des solutions suivantes:
faire le lien symbolique pour pointer vers la
mysql.sock
socket unix de travail (pour MAMP, voir la réponse d'Andrew ),par exemple, si vous utilisez MAMP, vous pouvez créer un lien symbolique vers l'emplacement par défaut:
chemin correct de votre
pdo_mysql.default_socket
,mysql.default_socket
oumysqli.default_socket
dans votrephp.ini
spécifier
unix_socket
dans votresettings.php
dans votre$databases
variable, par exempleDépannage
D'autres cas de bord pourraient être:
Déboguer avec XDebug:
echo '<?php xdebug_start_trace("/tmp/foo.log");' > init.php
drush -c init.php ev 'Database::getConnection("default", "default");'
xdebug.show_exception_trace=1
dans votrexdebug.ini
sudo dtruss -fn mysqld
, sous Linux avecstrace
la source
J'utilise MAMP Pro et j'ai eu ce même problème. Le moyen le plus simple que j'ai trouvé pour le corriger était d'ajouter la ligne suivante à votre tableau $ database dans le fichier settings.php.
Dans son intégralité, cela devrait ressembler à ceci:
L'erreur exacte que je recevais ressemblait à ceci:
Exception non capturée supplémentaire levée lors de la gestion de l'exception.
Original
PDOException: SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type dans drupal_is_denied () (ligne 2193 de ...
Additionnel
PDOException: SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type dans _registry_check_code () (ligne 3477 de ...
La commande Drush s'est terminée anormalement en raison d'une erreur irrécupérable.
la source
J'ai résolu ce problème avec les étapes suivantes, similaires aux réponses précédentes mais pas les mêmes.
Ajoutez un lien symbolique:
Trouvez le php.ini utilisé:
Ajoutez les paramètres suivants à php.ini:
la source
Cela est dû à une erreur de configuration dans vos configurations PHP / SQL. Quelque part, le socket utilisé par votre serveur Web et la ligne de commande sont configurés différemment. Je recommande de vérifier votre configuration MySQL pour voir quel socket unix est utilisé, puis assurez-vous que la même valeur est utilisée dans toutes les configurations et compilations php.ini.
Si vous ne pouvez pas corriger la configuration, les étapes suivantes devraient fonctionner:
Si tout cela semble compliqué, une alternative est de changer l'hôte dans setting.php de localhost à 127.0.0.1. Cela ralentira le site, mais pour un site de développement, il peut ne pas être perceptible ou important. Pour un site de production, vous souhaitez utiliser le socket Unix et devez trier la configuration.
la source
Trouvé une manière plus simple / alternative d'installer drush sur un Mac:
Installez homebrew en le collant dans un terminal autonome
Ensuite, ajoutez drush en exécutant ce qui suit à partir du même terminal
L'exécution du statut drush fonctionne désormais correctement.
la source
Si vous travaillez avec l'installation MySQL.com de MySQL, il vous suffit de pointer PHP au bon endroit pour le
.sock
fichier.Dans votre
php.ini
, ajoutez / modifiez ces deux lignes:Pour trouver l'emplacement de votre php.ini (il n'existe peut-être pas encore), utilisez ce
Si le
php.ini
fichier n'existe pas encore, créez-le.la source
Soyez d'accord avec d'autres réponses que Drupal ne peut pas trouver la socket mysql. Les autres réponses m'ont aidé mais étaient incomplètes pour l'installation avec le service officiel Oracle Mysql installé. À savoir, l'emplacement par défaut du fichier mysql.sock. Voici donc un récapitulatif de mes réponses recommandées en fonction de votre cas d'utilisation:
Si vous utilisez mysql tel qu'il est inclus dans le package officiel MAMP, utilisez la réponse de @Andrew Alexander:
Pour Oracle MYSQL officiel:
la source
Pour une configuration MAMP 4, la solution consistait à cocher «Rendre cette version disponible sur la ligne de commande».
la source
J'ai reçu le message suivant dans le terminal:
(MAMP PRO + PHP 7)
J'ai résolu le problème à l'aide de ces instructions
la source
J'ai oublié que mon mysql local fonctionne sur un numéro de port unique, donc je ne savais pas pourquoi j'obtenais cela jusqu'à ce que j'examine ma configuration sur un autre site local.
la source