web-dev-qa-db-ja.com

PDOException:SQLSTATE [HY000] [2002] _registry_check_code()にそのようなファイルまたはディレクトリはありません

DrushはMAMPで実行されています、PHP 5.6.6。

内部/Volumes/Doxy/htdocs/omegadoen/sites/all/themes/omega

走る:

drush omega-wizard

私は得ます:

例外の処理中にスローされたキャッチされなかった追加の例外。

元の

PDOException:SQLSTATE [HY000] [2002] drupal_is_denied()にはそのようなファイルやディレクトリはありません(/Volumes/Doxy/htdocs/omegadoen/includes/bootstrap.incの1917行目)。

追加

PDOException:SQLSTATE [HY000] [2002] _registry_check_code()にそのようなファイルまたはディレクトリはありません(/Volumes/Doxy/htdocs/omegadoen/includes/bootstrap.incの3169行目)。


回復できないエラーのため、Drushコマンドが異常終了しました。 [エラー]

今何?

6
Bi Devi

簡単にするために、詳細パラメータとデバッグパラメータを使用して_drush status_を確認します。

_drush -vd status
_

別のプロファイルを使用している場合は、_-l http://foo_として含めることを忘れないでください。

それでも問題が解決しない場合は、Drupalのブートストラップに問題があります。

SQL接続が機能しているかどうかを最初に確認します。

_drush sql-cli
_

そうでない場合は、Drupal設定ファイルでdb資格情報を確認してください。

その場合、ソケットを介したSQL接続に問題があります。

したがって、MAMPでは次のことを行う必要があります。

  1. My.cnfのsocketの値を確認します(メニュー:ファイル/テンプレートの編集)。通常は次のように設定されます。

    _socket      = /Applications/MAMP/tmp/mysql/mysql.sock
    _
  2. MySQLがこのファイルを見つけられるかどうかを再確認します。

    _$ mysql_config --socket
    /Applications/MAMP/tmp/mysql/mysql.sock
    _
  3. PHPに正しい_mysql.sock_設定があるかどうかを再確認します。

    _$ php -i | grep mysql.default_socket
    _
  4. ソケットを_/tmp_にリンクし、それが役立つかどうかを確認します。

    _Sudo ln -s /Applications/MAMP/tmp/mysql /var/mysql
    _
  5. ソケットファイルをテストします。

    _mysql --socket=/var/mysql/mysql.sock
    _
  6. それでも問題は?次の設定を_$databases_に追加します。

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

トラブルシューティング

  • 試してください:_drush sqlq "SELECT @@version_comment LIMIT 1"_
  • 試してください:drush ev "Database::getConnection('default', 'default');"
  • 試してください:mysql --socket=$(php -r 'echo ini_get("mysql.default_socket");')
  • Unixソケットの権限を確認してください:stat $(mysql_config --socket)
  • デバッグ:OS Xでは_Sudo dtruss -fn mysqld_、Linuxではstrace
  • 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_に_xdebug.ini_を設定します
  • MySQLの設定を確認します。

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

  • してみてください レジストリを再構築
23
kenorb