我正在AWS服务器+ PostgreSQL上工作。当我执行一个查询来创建数据库时,我得到一个错误:
CREATE DATABASE cannot run inside a transaction block
我正在Linux Ubuntu 12.04 LTS上工作。如何解决此问题?
cpjpxq1n1#
我在PostgreSQL中使用了打开自动提交,它对我很有效。下面是打开自动提交的查询
SET AUTOCOMMIT = ON
请注意这仅适用于PostgreSQL 9.4及更低版本
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
nwnhqdif3#
在Postgres SQL 14.1的pgAdmin查询工具中,我在运行创建数据库查询和其他查询时看到了同样的错误。运行创建数据库查询本身成功完成。
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
uujelgoq5#
我通过Query Tools完成了,得到了你的错误。为了解决这个问题,我打开了PSQL Tool,然后在中创建了我的数据库。
Query Tools
PSQL Tool
sudo su - postgres
psql -d postgres -U postgres
create database dbName;
5条答案
按热度按时间cpjpxq1n1#
我在PostgreSQL中使用了打开自动提交,它对我很有效。
下面是打开自动提交的查询
请注意这仅适用于PostgreSQL 9.4及更低版本
ruarlubt2#
注意,对于postgres 9.5+,您必须用途:
但我猜,你真正想做的是销毁数据库,然后用一个命令重新创建它。
nwnhqdif3#
在Postgres SQL 14.1的pgAdmin查询工具中,我在运行创建数据库查询和其他查询时看到了同样的错误。运行创建数据库查询本身成功完成。
46qrfjad4#
如果在创建表块中有注解行,也会发生这种情况
问题代码:
解决方案:
uujelgoq5#
我通过
Query Tools
完成了,得到了你的错误。为了解决这个问题,我打开了PSQL Tool
,然后在中创建了我的数据库。sudo su - postgres
psql -d postgres -U postgres
create database dbName;