标签: postgres-12

psycopg2.errors.ActiveSqlTransaction:CREATE TABLESPACE 无法在事务块内运行

我对 Python 很陌生,我们有一个应用程序容器和一个数据库容器。应用程序容器从 CLI 收集 DB_HOST、PORT 等值,并尝试在同一 Docker 主机上运行的容器化 Postgres DB 上创建表空间。

在执行查询时,我们收到以下错误。

psycopg2.errors.ActiveSqlTransaction: CREATE TABLESPACE cannot run inside a transaction block
Run Code Online (Sandbox Code Playgroud)

使用的Python库:

  • psycopg2
  • psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT

应用程序文档示例


FROM python:3.7-alpine

RUN apk update && \
    apk add --no-cache openssh sshpass && \
    apk add --no-cache --virtual .build-deps gcc musl-dev && \
    apk add linux-headers && \
    apk add python3-dev && \
    apk add postgresql-dev && \
    apk add postgresql-client && \
    apk add bash && \
    apk add libffi-dev make …
Run Code Online (Sandbox Code Playgroud)

python psycopg2 postgres-12

9
推荐指数
2
解决办法
6924
查看次数

B树索引好像没有用?

我是 Postgres 的新手,我正在尝试更多地了解索引。我使用的是 12.5 版本,这是我的代码:

CREATE TABLE textfun(content TEXT);
CREATE UNIQUE INDEX text_b ON textfun(content);

INSERT INTO textfun (content)
SELECT (CASE WHEN (random()<=0.3) THEN 'https://mywebsite/nanana/'
WHEN (random()<=0.6) THEN 'https://mywebsite/friendy/'
ELSE 'https://mywebsite/mina/' END) || generate_series(1000000,2000000);
Run Code Online (Sandbox Code Playgroud)

在这里,我创建了一百万条记录,希望看到索引的效果。

当我尝试获取查询计划时:

explain analyze
SELECT content FROM textfun WHERE content LIKE 'mina%'; 
Run Code Online (Sandbox Code Playgroud)

我得到这个回来:

CREATE TABLE textfun(content TEXT);
CREATE UNIQUE INDEX text_b ON textfun(content);

INSERT INTO textfun (content)
SELECT (CASE WHEN (random()<=0.3) THEN 'https://mywebsite/nanana/'
WHEN (random()<=0.6) THEN 'https://mywebsite/friendy/'
ELSE 'https://mywebsite/mina/' END) || generate_series(1000000,2000000);
Run Code Online (Sandbox Code Playgroud)

我期望并行索引扫描。

我试过:

explain analyze …
Run Code Online (Sandbox Code Playgroud)

sql postgresql indexing pattern-matching postgres-12

4
推荐指数
1
解决办法
1752
查看次数

Postgres 从 10 升级到 12:pg_upgrade 由于存在所需库而失败

$ /usr/pgsql-12/bin/pg_upgrade \
> -b /usr/pgsql-1
pgsql-10/ pgsql-12/
> -b /usr/pgsql-10/bin/ \
> -B /usr/pgsql-12/bin/ \
> -d /var/lib/pgsql/1
10/ 12/
> -d /var/lib/pgsql/10/data/ \
> -D /var/lib/pgsql/12/data/ \
> --check

Performing Consistency Checks
-----------------------------
Checking cluster versions ok
Checking database user is the install user ok
Checking database connection settings ok
Checking for prepared transactions ok
Checking for system-defined composite types in user tables ok
Checking for reg* data types in user tables ok
Checking for contrib/isn with bigint-passing …
Run Code Online (Sandbox Code Playgroud)

database postgresql upgrade postgresql-10 postgres-12

3
推荐指数
1
解决办法
3479
查看次数