我尝试在表中创建新的db时,然后将它们分发,但是无法在新的db中使用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(未知)不存在 看起来像是恶性循环(
答案 0 :(得分:0)
您需要分别在所有数据库上运行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');
如果在启用Citus扩展名后运行CREATE DATABASE ...
,则可以看到帮助消息:
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()
在新数据库中添加工作程序节点。工作者元数据也存储在关联的数据库中。