0

我在同一个域上有 2 个站点(example.com、site2.example.com),我试图让它们都从主站点(example.com)引用相同的用户表等,以便通过单点登录两个都。

我设置了 2 个数据库 - 每个数据库一个 - 并设置了一个用户,该用户可以使用所有必需的权限访问这两个数据库。我在第二个站点中更改了我的 settings.php,如下所示(以及许多变体):

 $databases['default']['default'] = array(
    'driver' => 'mysql',
    'database' => 'database_site2',
    'username' => 'multi_username',
    'password' => 'multi_password',
    'host' => 'localhost',
    'prefix' => array(
      'default'   => 'database_site2.',
      'users'     => 'database_main_site.',
      'sessions'  => 'database_main_site.',
      'role'      => 'database_main_site.',
      'authmap'   => 'database_main_site.',
    ),
  );

不幸的是,在进行此更改后尝试访问 site2 时,我收到以下错误消息:

关闭函数中抛出未捕获的异常。

PDOException: SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“-amalga-01.semaphore WHERE (value = >'1471293032527ac89955a330.73110726')' 附近使用正确的语法:DELETE FROM {semaphore} >WHERE (value = :db_condition_placeholder_0) ; lock_release_all() 中的数组( [:db_condition_placeholder_0] => >1471293032527ac89955a330.73110726 )(>/home/sites/amalgamart.co.uk/public_html/exampletown/includes/lock.inc 的第 269 行)。

如果有人能够帮助我解决这个问题,我将永远感激不尽!

谢谢!

4

1 回答 1

0

Drupal 的数据库配置的“前缀”部分是指在单个数据库中添加到表名之前的字符串,而您正在尝试使用两个不同的数据库。我认为这在 Drupal 中是不可能的。请阅读内容,或者您​​可以尝试查看域访问模块是否适合您的需求。

于 2013-11-07T17:46:16.910 回答