Я пытаюсь создать базу данных PostgreSQL 12.1 (не схему), используя оператор CREATE DATABASE
из программы Python 3.7.5, подключающейся к экземпляру PostgreSQL 12.1 в качестве пользователя postgres через UnixODB C и используя модуль PyODB C, все работают на Ubuntu 19.10. Моя программа запускает al oop, который читает строки из сценария SQL DDL, разделяя операторы SQL на точку с запятой. В нем регистрируются следующие ошибки:
16:15:20 ERROR Error executing statement 'CREATE DATABASE "TestV1" WITH OWNER = postgres': ('25001', '[25001] ERROR: CREATE DATABASE cannot run inside a transaction block;\nError while executing the query (1) (SQLExecDirectW)')
16:15:20 CRITICAL Unable to create objects: ('25001', '[25001] ERROR: CREATE DATABASE cannot run inside a transaction block;\nError while executing the query (1) (SQLExecDirectW)')
Мой SQL DDL-скрипт начинается со следующей строки: CREATE DATABASE "TestV1" WITH OWNER = postgres;
Я добился успеха с CREATE SCHEMA
в том же контексте, но не с CREATE DATABASE
. Кроме того, я не могу найти здесь никаких ответов, касающихся конкретно CREATE DATABASE
на PostgreSQL. Я могу создать базу данных из командной строки оболочки, используя createdb
. Я попытался установить AUTOCOMMIT в сценарии SQL DDL, но это не работает.