brewを使用してdrush 6.5.0
から8.0.1-dev
にアップグレードした後、drushターミナルコマンドは一般的な
「PDOException:SQLSTATE [HY000] [2002]」エラー。
それを機能させる唯一の方法は、私のすべてのプロジェクトのunix_socket行をmy Drupal settings.php
ファイルに追加することです。
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'site',
'username' => 'user',
'password' => 'pass',
'Host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
),
),
);
私が/var/mysql/mysql.sock
を使用しても、シンボリックリンクがアップしているので機能します。
lrwxr-xr-x 1 root wheel 39B Mar 11 2015 /var/mysql/mysql.sock -> /Applications/MAMP/tmp/mysql/mysql.sock
しかし、それはまさに私が理解していないことです。また、ある時点で構成したいので、現在および今後のプロジェクトのsettings.php
ファイルをすべて編集する必要はありません。
だから私の質問は次のとおりですdrushは(MAMP上の)mysqlソケットのパスをどこで探しますか?
php.ini
を介している場合は、それも正しいはずです(/Applications/MAMP/bin/php/php5.6.10/conf/php.ini):
mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock
現在、私の.bash_profile
には、以前のDrushのインストールで問題なく動作したため、この問題に関連するエイリアスやエクスポートは含まれていません。
まず、php
で使用されているdrush
およびphp.ini
ファイルを確認します。
$ drush status --full
Site URI : http://default
Database driver : mysql
Database hostname : localhost
Database username : root
Database name : drupal7
Drupal bootstrap : Successful
Drupal user :
PHP executable : /usr/local/opt/php56/bin/php
PHP configuration : /usr/local/etc/php/5.6/php.ini
次に、その デフォルトのMySQLソケット ローカルdb接続の名前を編集します。
pdo_mysql.default_socket=/path/to/mysql.sock
PHPが異なる(/tmp/mysql.sock
)で構成されていない限り、デフォルトでは--with-mysql-sock
を指します。
確認する:
$ php -i | grep ^pdo_mysql.default_socket
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock
したがって、代わりに/var/mysql/mysql.sock
を探していたため、/tmp/mysql.sock
が機能しなかったのはおそらくそのためです。
その後、シンボリックリンクは期待どおりに機能するはずです。
drush
が間違ったPHPのインスタンスを使用している場合は、それをPATH
に追加するか(そうしたように)、または--php=</path/to/file>
で指定すると、正しいphp.ini
が読み込まれます。
または、設定ファイルでunix_socket
を指定します(すでに行ったように)。
解決策を見つけました...
drush status
PHP実行可能パスはOSXネイティブパスであり、brewによってインストールされたPHP
〜/ .bash_profileに次の行を追加します
export PATH="/Applications/MAMP/bin/php/php5.6.10/bin:/Applications/MAMP/Library/bin:$PATH"
drushを正しいphp.iniファイルにルックアップさせました
しかし私にとって、シンボリックリンクがなぜなのかはまだ謎です
lrwxr-xr-x 1 root wheel 39B Mar 11 2015 /var/mysql/mysql.sock -> /Applications/MAMP/tmp/mysql/mysql.sock
トリックをしませんでした