如何连接位于不同服务器上的两个MySQL数据库中的表?

时间:2011-12-04 19:32:04

标签: php mysql database-connection

我们有一个由一家大型国际公司托管的网站,我们的软件包包含许多MySQL数据库:这些数据库位于不同的服务器上。我希望运行一个SQL查询来在两个不同数据库的表之间使用LFET JOIN选择项目。

在PHP脚本中,我设置了两个单独的数据库连接,然后运行SELECT查询,简单地引用两个表中的字段(数据库之间没有公共字段或表名)。这无法运行。根据在互联网上的各种搜索中发现的提示,我继续: 1.扩展对databasename.tablename.fieldname格式的引用 2.确保两个数据库连接完全不同。添加“true”参数

$db=MYSQL_CONNECT($server, $user, $password, true) or die ( "<H3>Server unreachable</H3>");
$seldb=MYSQL_SELECT_DB($database) or die ( "<H3>Database non existent</H3>");

$dbM=MYSQL_CONNECT($serverm, $userm, $passwordm, true) or die ( "<H3>members database server unreachable</H3>");
$seldbM=MYSQL_SELECT_DB($databasem) or die ( "<H3>Members database non existent</H3>");

MySQL查询仍然失败。

然后我制作了一个结构如下的脚本

  • 连接到database1
  • 查询datbase1
  • 连接到databaseM
  • 查询databaseM

这很有用。

我接下来构建了脚本

  • 连接到database1
  • 连接到databaseM
  • query database1
  • 查询databaseM

database1的查询失败。

拥有结构

  • 连接到databaseM
  • 连接到database1
  • query database1
  • 查询databaseM

导致第一个查询正在运行,但第二个查询失败。

任何人都可以提供帮助,或者不可能做以下事情:

连接到两个数据库,然后使用像

这样的php命令
 $SQL="SELECT db1 roles.HMRSmembershipNumber, people.called,  people.lastname
       FROM roles LEFT JOIN people ON roles.HMRSmembershipNumber = people.HMRSmembershipNumber
  WHERE role LIKE 'EC Member%'
 ;";

3 个答案:

答案 0 :(得分:4)

听起来像你正在寻找的是federated storage engine

  

从MySQL 5.0.3开始提供FEDERATED存储引擎。   它是一个存储引擎,可以访问远程表中的数据   数据库而不是本地表。

     

从MySQL 5.0.3开始提供FEDERATED存储引擎。   此存储引擎允许从远程MySQL访问数据   不使用复制或群集的本地服务器上的数据库   技术。使用FEDERATED表时,在本地服务器上进行查询   在远程(联合)表上自动执行。没有数据   存储在本地表中。

答案 1 :(得分:0)

你可以尝试做什么虽然我不确定它是非常有效的是使用来自一个数据库的数据填充数组,并使用来自另一个数据库的数据填充数组,并使用数组函数来处理它们,可能是array_merge等。只是一个想法!

答案 2 :(得分:-1)

我希望运行一个SQL查询,在两个不同数据库的表之间使用LEFT JOIN选择项目。

那是不可能的。