【问题标题】:MemSQL: Table is a distributed table. You cannot query it from a leafMemSQL:表是分布式表。您不能从叶子中查询它
【发布时间】:2017-07-10 13:57:10
【问题描述】:

我在单个服务器上安装了 MemSQL 进行测试,并创建了三个表,如本示例中所述:

MEMsql - how to run queries

我可以从通过 ssh 运行的 Memsql 客户端中查询数据库,没有任何问题。但是,每当我尝试在 PHP 中以编程方式运行相同的查询时,我都会收到错误消息“表 'memsql_example.employees' 是一个分布式表。您不能从叶子中查询它”。

产生该错误的 PHP 代码如下:

<?php

  $dbHost="127.0.0.1";
  $dbUser="root";
  $dbPass="";
  $dbName="memsql_example";
  $dbPort=3307;

  // Connect to database
  $mysqli = new mysqli($dbHost, $dbUser, $dbPass, $dbName, $dbPort);
  if ($mysqli==false) die ("Error connecting to database\n");

  $sql="select count(*) from employees;";
  $result=$mysqli->query($sql);
  if (!$result) {
    printf("Errormessage: %s\n", $mysqli->error);
    die();
  }

?>

我尝试通过将 $dbHost 更改为指向服务器 IP 而不是 127.0.0.1 从另一台服务器运行上述脚本,但没有成功,因为我得到了同样的错误。

我已经盯着这个看了好几个小时 - 我做错了什么?

提前致谢...

【问题讨论】:

    标签: singlestore


    【解决方案1】:

    MemSQL 中的查询应针对聚合器,默认情况下它将在端口 3306 上运行。看起来您正在查询端口 3307,默认情况下该端口将是您的配置中的叶子。

    【讨论】:

    • 啊,谢谢 Rob,我选择了 3307,这样我就可以在它旁边运行 MySQL,它默认为端口 3306。我明天重新安装(这里很晚)并再次测试它
    • 啊,我明白了。如果您在 3306 上运行 MySQL,则 MemSQL 将无法运行。你在安装过程中更改了 MemSQL 端口吗?
    • 我实际上已经使用 3306 将它放到了两台不同的机器上(一台作为集群,另一台作为叶子)并且运行良好。我发现这个教程很有用,因为我很不耐烦,想直接潜入并继续学习。我的最后期限迫在眉睫....blog.programster.org/setup-a-memsql-cluster-in-debian-8
    猜你喜欢
    • 2022-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    相关资源
    最近更新 更多