1

我有一个带有现有托管 MySQL 数据库的 Joomla (PHP) 网站。我有一个包含一些统计数据的 Google Cloud SQL 实例。

我需要跨两个数据库查询数据,并希望查询在 Google Cloud SQL 实例上运行。

到目前为止,我的研究让我相信,最好的方法是在 Google Cloud SQL 数据库中创建一个联合表,但在尝试这样做时,我没有得到我期望的结果(我也没有收到错误吗? !)

Joomla MySQL 表:

CREATE TABLE test_table (
  id INT(20) NOT NULL AUTO_INCREMENT,
  name VARCHAR(32) NOT NULL DEFAULT '',
  other INT(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (id),
  INDEX name (name),
  INDEX other_key (other)
)
ENGINE=MyISAM
DEFAULT CHARSET=latin1;

谷歌云 SQL:

CREATE TABLE federated_table (
  id INT(20) NOT NULL AUTO_INCREMENT,
  name VARCHAR(32) NOT NULL DEFAULT '',
  other INT(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (id),
  INDEX name (name),
  INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://*uid*:*pwd*@*joomla_server_ip*:3306/*database_name*/test_table';

在哪里

*uid*, *pwd*, *joomla_server_ip* and *database_name* 

都是有效值。

两个语句都可以正常执行,没有错误,但是在 Joomla 上将数据插入 *test_table* 后,我无法在 Google Cloud SQL 上的 *federated_table* 中看到任何数据。

我已经尝试使用命令行工具 (Windows) 和 SQuirrel SQL JDBC 客户端创建联合表。

因为我没有看到任何错误,所以我不确定问题出在 Joomla 数据库端还是 Google Cloud SQL 数据库端。因此,任何帮助将不胜感激。我假设问题出在两个数据库之间的连接上,但我愿意尝试您可能向我提出的任何其他理论。

编辑:

我现在正在使用不同的客户端进行连接(MySQL Workbench),并且在尝试执行相同操作时会报告错误

1286 Unknown storage engine 'FEDERATED' 1266 Using storage engine InnoDB for table 'federated_table'
4

1 回答 1

2

在提出这个问题后不久,Google 将 MySQL Wire 协议添加到了 Google Cloud SQL。

http://googlecloudplatform.blogspot.co.uk/2013/10/google-cloud-sql-now-accessible-from-any-application-anywhere.html

现在可以以正常方式创建联合表。

于 2014-05-30T14:43:42.150 回答