ОШИБКА: CREATE DATABASE не может работать внутри блока транзакции SQL состояние: 25001 - Использование PostgresSQL и pgAdmin 4 - PullRequest
0 голосов
/ 04 марта 2020

Привет, ребята, я застрял в проблеме с моей первой базой данных на Postgres, и я не могу найти решение, я попытался выяснить, было ли это вопросом установки автокоммитов, но, видимо, с postgres 9.x это неокончательная операция. Документация предполагает, что это может быть ошибка в разрешениях или полный диск. Это код

CREATE DATABASE datacamp_courses 
WITH 
OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'English_United States.1252'
LC_CTYPE = 'English_United States.1252'
TABLESPACE = pg_default
CONNECTION LIMIT = -1;


CREATE TABLE datacamp_courses (
    course_id SERIAL PRIMARY KEY,
    course_name VARCHAR (50) UNIQUE NOT NULL,
    course_instructor VARCHAR (100) NOT NULL,
    topic VARCHAR (2) NOT NULL
    );

Это ошибка:

ERROR:  CREATE DATABASE cannot run inside a transaction block
SQL state: 25001

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 04 марта 2020

Сообщение не требует пояснений: вы не можете создать базу данных в транзакции.

Вы можете попытаться выполнить свои операторы в psql (CLI) с запусками в AUTOCOMMIT по умолчанию: это будет работать, но учтите, что таблица будет создана в текущей базе данных (по умолчанию postgres), что, возможно, не то, что вы хотите. Если вы хотите создать базу данных и таблицу в этой новой базе данных, вы можете попробовать:

  create database mydb;
  \connect mydb
  create table test(c int);
...