在SQL-Alchemy中使用CitusDB
问题描述:
我正在使用caravel和CitusDB,我遇到了连接到数据库节点的问题。坦率地说,我不知道该怎么做。在SQL-Alchemy中使用CitusDB
我跟着官方installation instructions安装并运行。
我可以通过/opt/citusdb/4.0/bin
中的psql
脚本登录运行的主站,但我无法从应用程序连接到它。 Flask-SQLAlchemy支持postgresql方言和驱动程序,运行的服务器似乎在5432端口上。我正在用psycopg2
来尝试。
我已经关闭了postgresql
服务,因为这是干扰主节点启动。
这是错误:
所有的2016-04-28 10:10:53,487:ERROR:flask_appbuilder.security.sqla.manager:DB Creation and initialization failed: (psycopg2.OperationalError) could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
答
首先,我强烈建议使用西特斯5.0。你所遵循的文档是关于CitusDB 4.0版本的,它是PostgreSQL的一个分支。目前,Citus可以作为PostgreSQL 9.5的扩展安装,并且具有许多新功能和错误修正。你可以看看Citus installation instructions为5.0。
如果无法切换到Citus 5.0,那么问题可能与套接字文件路径有关。你可以尝试发出命令in this answer?
答
感谢@Ahmet Eren Başak
我从一个新的角度看待问题。
这个问题的关键是运行服务器的pid文件。 psycopg2
和postgresql
一般指的是/var/run/postgresql/
目录以查看服务器是否正在运行。 CitusDB显然没有权限编辑/创建这个目录中的文件。因此,pid文件在/tmp/
中创建。
的解决方案是该文件链接到/var/run/postgresql/
并解决它
ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
我不知道这其实是一个权限问题这么多,因为与西特斯4.0构建的一个问题。它可以在所有平台上使用'/ tmp',而“常规”PostgreSQL安装则在特定平台上使用'/ var/run/postgresql'。很可能Citus 5.0和更高版本不再有这个问题,但找到解决方法很好! – jasonmp85