CREATE DATABASE无法在事务块内运行

时间:2014-10-21 09:01:19

标签: database postgresql

我正在使用AWS server + PostgreSQL。当我执行查询以创建数据库时,我收到一个错误:

CREATE DATABASE cannot run inside a transaction block

我正在使用Linux Ubuntu 12.04 LTS。

如何解决此问题?

3 个答案:

答案 0 :(得分:13)

我在PostgreSQL中使用了启用自动提交功能,它为我工作。

以下是启用自动提交的查询

SET AUTOCOMMIT = ON

答案 1 :(得分:0)

注意,对于Postgres 9.5+,您必须使用:

psql -c '\set AUTOCOMMIT on'

但是我要猜​​测,您真正想要做的是销毁数据库并在单个命令中重新创建它。在这里,您去了:

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

答案 2 :(得分:0)

如果您在创建表块中注释了行,也会发生这种情况

问题代码:

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