2013-09-24 18 views
0

我有一个包含现有托管MySQL数据库的Joomla(PHP)网站。 我有一个Google Cloud SQL实例,其中包含一些统计数据。如何在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工作台),并问这个问题后不久,该报告试图做同样的事情

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

回答

0

时出错Google将Google Wire协议添加到Google Cloud SQL。

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

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

+0

此 - https://cloud.google.com/sql/docs/features - 特别指出,Cloud SQL不支持联合表。我错过了什么吗? – AvnerSo

+1

这是很久以前的事了,但如果我的记忆服务正确,那么您可以做的是在外部托管的数据库中创建联合表,以连接到Google Cloud SQL实例。您无法执行的操作是在Google Cloud SQL中创建联合表。 – John