我正在使用AWS server + PostgreSQL。当我执行查询以创建数据库时,我收到一个错误:
CREATE DATABASE cannot run inside a transaction block
我正在使用Linux Ubuntu 12.04 LTS。
如何解决此问题?
答案 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