0

複数の drupal インスタンスをインストールしており、1 つのインスタンスから他のすべてのサイトでユーザーとセッション テーブルを共有したいと考えています。適切なプレフィックスを settings.php ファイル $db_prefix = array( 'default' => 'db1.' , 'セッション' => 'db2.', 'ユーザー' => 'db2.', );

Db1 と db2 には、独自の db ユーザー アカウントがあります。settings.php ファイルにもユーザー アカウントと資格情報を指定します。$db_url = array( 'default' => 'mysql://user1:password@localhost/db1', 'users' => 'mysql://user2:password@localhost/db2', );

しかし、drupal が db2 にアクセスしている場合、db2 資格情報を使用して db2 のユーザー テーブルにアクセスすることを認識していません。デフォルトのまま使い続けています。また、$db_url の「user」の代わりに、db の名前と db2 のサイト名を使用しようとしましたが、成功しませんでした。

設定ファイルで db2 にアクセスするときに別のアカウントを使用するように drupal に指示する方法はありますか。mysql で db2 のユーザー テーブルへのアクセスを db1 で user1 に割り当てることができることはわかっていますが、settings.php でこれを実行できる場合はそうしたくないでしょう。

4

1 に答える 1

0

それはいけません。

たとえば、次のように {node} と {user} を結合するクエリがあります。

SELECT n.*, u.name FROM {node} n INNER JOIN {user} u ON u.uid = n.nid

異なるデータベースを使用しても問題が発生する可能性があり、実際には $db_prefix の使用が想定されているものではありません。

したがって、次の 2 つのオプションがあります。

  • 両方のデータベースに共通のユーザーを作成します。

  • それができない場合 (たとえば、ホスティング環境でユーザーとデータベースが 1:1 でマッピングされているため)、それらを同じデータベースに移動しますが、別のプレフィックスを使用します。たとえば、'site1_' と 'site2_' です。

于 2011-02-22T18:42:56.737 に答える