web-dev-qa-db-ja.com

エラー:クラス 'Drush \ Sql \ Sql'が見つかりません

これは、Composerを使用してDrupalをインストールする最初の試みです。Composerと Drupal Project テンプレートが正常にインストールされました) Drushを使用します。インストールするには、

composer create-project drupal-composer/drupal-project:~8.0 {dir} --stability dev --no-interaction

次に、Drupalをインストールしようとすると、Drushを使用して

../vendor/bin/drush site-install --db-url=mysql://{username}:{password}@localhost/{database}

このエラーが表示されます

Error: Class 'Drush\Sql\Sql' not found in /Users/.../vendor/drush/drush/src/Sql/SqlBase.php on line 81

Drushをインストールし、Composerをローカルでインストールしました。composerをインストールした後、drushを再度要求しました。Drush9.2.3を使用しようとしました。 Drupalの手動インストールを実行すると、Drush initは実行されますが、バージョン以外の他のコマンドを使用すると、

In Connection.php line 149:
SQLSTATE[HY000] [2002] No such file or directory

私が使用しています:

  • Composer 1.6.5
  • Drush 9.3
  • Drupal 8.4.5
4
xturgorex

パスワードに#が含まれていますか?このテストを試してください:

<?php

function test_url($url) {
    $message = (parse_url($url) === false)?"parse_url unable to parse url: 
{$url}\n":print_r(parse_url($url),true);
    echo  $message;
}

test_url("mysql://user:password@site/database_name");
test_url("mysql://user:C0mPl3XP4ss@site/database_name");
test_url("mysql://user:Ci)(*$!@@site/database_name");
test_url("mysql://user:pass#Word@site/database_name");
?>

最後のURLの例は解析されません。これはから来ているようです

vendor/drush/drush/src/Sql/SqlBase.php:dbSpecFromDbUrl().

同じ問題が発生し、MySQLユーザーパスワードの「#」までたどりました。パスワードを変更して「#」を削除すると、すべてが機能します。

4
James Crow

Windows 10でも同様の問題がありました。Drushをグローバルとローカルの両方にインストールしていたため、最初は問題の原因がわからなかったのです。 Drushをグローバルにアンインストールした後、Drushがもう見つからないことに気付きました。ローカルドラッシュをPATHに追加した後、ようやくサイトインストールコマンドを起動できました。

0
Theo Balkwill