postgresql CREATE DATABASE不能在事务块内运行

hzbexzde  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(5)|浏览(309)

我正在AWS服务器+ PostgreSQL上工作。当我执行一个查询来创建数据库时,我得到一个错误:

CREATE DATABASE cannot run inside a transaction block

我正在Linux Ubuntu 12.04 LTS上工作。
如何解决此问题?

cpjpxq1n

cpjpxq1n1#

我在PostgreSQL中使用了打开自动提交,它对我很有效。
下面是打开自动提交的查询

SET AUTOCOMMIT = ON

请注意这仅适用于PostgreSQL 9.4及更低版本

ruarlubt

ruarlubt2#

注意,对于postgres 9.5+,您必须用途:

psql -c '\set AUTOCOMMIT on'

但我猜,你真正想做的是销毁数据库,然后用一个命令重新创建它。

printf '\set AUTOCOMMIT on\ndrop database <your_db_here>; create database <your_db_here>; ' |  psql postgres
nwnhqdif

nwnhqdif3#

在Postgres SQL 14.1的pgAdmin查询工具中,我在运行创建数据库查询和其他查询时看到了同样的错误。运行创建数据库查询本身成功完成。

46qrfjad

46qrfjad4#

如果在创建表块中有注解行,也会发生这种情况
问题代码:

CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,
    first_name VARCHAR(30),
    last_name VARCHAR(30) NOT NULL,
    date_of_birth DATE
-- managers INT FOREIGN KEY,
-- employees INT FOREIGN KEY,
-- companies INT FOREIGN KEY
);

解决方案:

CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,
    first_name VARCHAR(30),
    last_name VARCHAR(30) NOT NULL,
    date_of_birth DATE
);

-- managers INT FOREIGN KEY,
-- employees INT FOREIGN KEY,
-- companies INT FOREIGN KEY
uujelgoq

uujelgoq5#

我通过Query Tools完成了,得到了你的错误。为了解决这个问题,我打开了PSQL Tool,然后在中创建了我的数据库。

  1. sudo su - postgres
  2. psql -d postgres -U postgres
  3. create database dbName;

相关问题