【问题标题】:mysql workbench connect with multiple databasemysql工作台连接多个数据库
【发布时间】:2018-03-17 08:46:52
【问题描述】:

我的工作台 localhost 和远程服务器实例 shopify_data 上有两个不同的实例(默认模式 sales_report)。现在我想从 localhost 中的表 zipcode 和 sales_report 中远程服务器 shopify_data 的另一个表 shopify_orders 中的其他字段中获取数据。

查询看起来像:

SELECT Name, billing_zip, Billing_Name, Billing_Address1,Billing_Address2, Lineitem_name, Created_at
  FROM sales_report.shopify_orders 
 WHERE Created_at between '2017-08-31' and '2017-09-21' and Billing_Zip in (select zip_code from zipcode);

报错:

sales_report.shopify_orders 不存在。

如何将本地主机实例与 shopify_data 实例连接并在同一查询中获取数据。

谢谢。

迪帕克

PS:我不想将 shopify_orders 导入本地主机,因为值会随着每个订单动态变化,我不想重复导入

【问题讨论】:

    标签: mysql database mysql-workbench


    【解决方案1】:

    在工作台中,您可以在同一台服务器上以交叉方式处理多个数据库,这意味着在一个数据库的查询窗口中,您也可以访问其他数据库表。 为此,请执行以下步骤:

    1. 您在 localhost 上工作的数据库将其创建为远程服务器上的 testdb。
    2. 创建一个mysql用户“anydbuser”,它可以访问你服务器的所有数据库。在 plesk 中,当用户从数据库选择下拉菜单中创建时选择 ANY。
    3. 现在使用 anydbuser 连接 testdb。
    4. 在查询窗口你可以试试这个查询:select * from original_db_name.tablename;
    5. 您可以在 testdb 查询窗口中访问上述 db 表的结果

    【讨论】:

      【解决方案2】:

      使用 MySQL 无法通过单个连接访问存储在不同服务器上的数据。您始终打开与单个服务器的连接,并且可以使用该服务器上可用的数据库对象(前提是您拥有该服务器的权限)。

      我应该添加federated tables 的选项。更准确地说,它是一个存储引擎,它允许在本地表中托管远程服务器上的数据,然后可以对本地和远程数据进行连接。但这需要先定义此类表,并且您不能使用 FK(还有其他限制)。

      【讨论】:

      • 感谢您的回复,虽然连接不同数据库的想法是在它们之间玩耍,但这不是违反直觉的,但遗憾的是这是可行的,但有很多限制:(跨度>
      • 不同的数据库(又名模式)与不同的服务器不同。您当然可以在查询中同时使用多个模式,只要它们位于同一个服务器实例上。
      猜你喜欢
      • 2016-07-12
      • 2015-05-21
      • 1970-01-01
      • 2016-06-25
      • 2015-05-11
      • 2011-12-13
      • 2016-05-24
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多