データベースへの接続に問題があります。数日前に機能しましたが、なぜ機能しないのか理解できません。それはD8サイトです。 Drushのバージョンは8.1.12です。
Alias-fileとsettings.php-files(サーバーとローカルの両方)とデータベースの設定がすべて正しく表示されていることを確認しました。私のローカルサイトはMamp 4.1.1で実行されています。ネットワークアクセスが許可されます。
これは、sql-syncを実行するときに発生するエラーですdrush sql-sync @local @dev
。 Rsyncは正常に動作します。
Unable to load class Drush\Sql\Sql [error]
exception 'Drush\Sql\SqlException' with message 'Unable to find a matching SQL Class. Drush cannot find your database connection details.' in /vendor/drush/drush/commands/sql/sql.drush.inc:541 [error]
Stack trace:
#0 /vendor/drush/drush/commands/sql/sql.drush.inc(252): drush_sql_get_class()
#1 [internal function]: drush_sql_dump()
#2 /vendor/drush/drush/includes/command.inc(422): call_user_func_array('drush_sql_dump', Array)
#3 /vendor/drush/drush/includes/command.inc(231): _drush_invoke_hooks(Array, Array)
#4 [internal function]: drush_command()
#5 /vendor/drush/drush/includes/command.inc(199): call_user_func_array('drush_command', Array)
#6 /vendor/drush/drush/lib/Drush/Boot/BaseBoot.php(67): drush_dispatch(Array)
#7 /vendor/drush/drush/includes/preflight.inc(66): Drush\Boot\BaseBoot->bootstrap_and_dispatch()
#8 /vendor/drush/drush/drush.php(12): drush_main()
#9 {main}
sql-dump failed.
そして、これがaliases.drushrc.phpです(もちろん、私のローカルコピーには認証情報が含まれています)。
<?php
/* Tambourhinoceros Site */
$aliases["local"] = array (
'root' => '', // local path
'uri' => 'local.tambourhinoceros.net', // local uri
'path-aliases' =>
array (
'%dump-dir' => '/tmp',
'%drush' => '/usr/local/bin',
'%site' => 'sites/default',
),
'remote-user' => 'tamb_dev',
'ssh-options' => '-T',
'databases' =>
array (
'default' =>
array (
'default' =>
array (
'database' => '', // local database
'username' => '', // local database user
'password' => '', // local database pw
'Host' => 'localhost',
'port' => '8889',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
'prefix' => '',
),
),
),
);
$aliases["dev"] = array (
'root' => '', // remote path
'uri' => 'drupal-85630-297475.cloudwaysapps.com', // remote uri
'path-aliases' =>
array (
),
'remote-Host' => '', remote IP
'remote-user' => '', remote User
'command-specific' =>
array (
'rsync' =>
array (
'mode' => 'rlptzO',
'verbose' => true,
'no-perms' => true,
),
),
'databases' =>
array (
'default' =>
array (
'default' =>
array (
'database' => '', remote database
'username' => '', remote user
'password' => '', remote pw
'Host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
),
)
?>
解決しました。そしていつものように、問題は思ったよりずっと小さくてシンプルであることがわかりました...
ローカルパスの最後に「/ web」セグメントがありませんでした。追加すると、rsyncとsql-syncの両方が機能します。
すべての入力の人々に感謝します。
追加することで解決します
--root=/full/path/to/your/webroot
drushコマンドに。
ローカル接続で、「unix_socket」オプションを追加して、ローカルのmysqlソケットを指すようにします。
$databases['default']['default'] = array (
'database' => '',
'username' => '',
'password' => '',
'prefix' => '',
'Host' => 'localhost',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
'unix_socket' => '/var/mysql/mysql.sock',
);
デバッグのより完全な手順: https://drupal.stackexchange.com/a/174128/25221