web-dev-qa-db-ja.com

drush sql-dumpを使用して特定のデフォルト以外のデータベースをエクスポートする

私のDrupal 7サイトは、次のような$databases配列を使用して複数のデータベースに接続します。

$databases = [
  'default' => [
    'default' => [
      'database' => 'examplecom',
      'username' => 'example',
      'password' => 'sostrongpassword',
      'Host' => '',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ],
  ],
  'nondefault' => [
    'default' => [
      'database' => 'notdefaultdb',
      'username' => 'notdefaultuser',
      'password' => 'notdefaultpass',
      'Host' => '',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ],
  ],
];

理想的には、drush --database-key=nondefault sql-dump > myfile.sqlのようなことができるようにしたいのですが、それを実現する方法が見当たらないようです。出来ますか?

これを行うカスタムスクリプトを作成してみました。

drush_sql_bootstrap_further();
db_set_active('nondefault');
$sql = drush_sql_get_class();
return $sql->connect(FALSE);

そして、そのスクリプトをdrush scr foo.phpで呼び出しますが、SQL接続(またはその他のコマンド)はデフォルトのデータベースに対して機能するようです。

2
greggles

Drush 8のドキュメントによると、必要なことを行う--database = keyオプションがあります。

次のコマンドを使用して、複数のデータベースがあるD8サイトに対して検証しました。

drush @dev sql-dump --database="blog_import" > ~/tmp/blog_import.sql

Drush sql-cliコマンドにも同じオプションがあるため、次のようなコマンドを使用してダンプをインポートできます。

drush @dev sql-cli --database="blog_import" < ~/tmp/blog_import.sql
4
CG Monroe