citus - 如何从另一个数据库(不是 postgres)创建引用表?
问题描述
我尝试创建新数据库,当其中的表时,然后将它们分发,但不能在新数据库中使用 create_reference_table() (未找到)。如果我尝试运行 create_reference_table('newbie.schema.new_table) 我将收到错误“错误:未实现跨数据库引用”:
CREATE DATABASE newbie;
SELECT * from master_add_node('citus-worker1', 5432);
SELECT * from master_add_node('citus-worker2', 5432);
SELECT run_command_on_workers('CREATE DATABASE newbie;');
\c newbie
create table new_table
SELECT create_reference_table('schema.new_table');
导致错误:函数 create_reference_table(unknown) 不存在看起来像恶性循环(
解决方案
您需要分别CREATE EXTENSION Citus
在所有数据库上运行(当然,如果您想在这些数据库中分配一些表)。Citus 将分布式对象元数据存储在相关数据库中。
这些步骤应该有效:
\c newbie
CREATE EXTENSION Citus;
CREATE SCHEMA s;
CREATE TABLE s.new_table(id int);
SELECT create_reference_table('s.new_table');
如果您在CREATE DATABASE ...
启用 Citus 扩展程序时运行,您可以看到帮助消息:
postgres=# create database new_db;
NOTICE: Citus partially supports CREATE DATABASE for distributed databases
DETAIL: Citus does not propagate CREATE DATABASE command to workers
HINT: You can manually create a database and its extensions on workers.
也不要忘记运行master_add_node()
以在新数据库中添加工作节点。工作人员元数据也存储在关联的数据库中。
推荐阅读
- php - 如何找到缓存的 modx 片段?
- c - 这个 UTF8 到代码点的示例是否正确?
- r - 聚合字符行,拆分和重复
- php - 如何在pgsql中插入一个值,其中要插入的行等于函数中传递的数组数?
- python-3.x - 我在 Jupyter 笔记本中遇到 MemoryError,同时在数据框列上运行 pd.unique 等简单命令
- angular - Angular2数据表过滤列
- node.js - multer 中的 req.file 总是返回 undefined
- excel - VBA遍历文件夹中的文件并将变量范围复制/粘贴到主文件
- c# - 在 Blazor 中跨多个 cshtml 页面共享单个属性
- javascript - 将外部脚本事件绑定到组件中的 html