我正在尝试使用Python 3.7.5程序中的CREATE DATABASE
语句创建一个PostgreSQL 12.1数据库(不是模式(,该程序连接到PostgreSQL 12.1实例作为用户通过UnixODBC并使用PyODBC模块,所有这些都运行在Ubuntu 19.10上。我的程序运行一个循环,该循环从 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
上却没有。同样,我似乎在这里找不到任何与PostgreSQLCREATE DATABASE
相关的答案。我可以使用createdb
从 shell 命令行创建数据库。我尝试在 SQL DDL 脚本中设置自动提交,但这不起作用。
似乎最好从 Bash shell 发出createdb
命令并完成它。然后,我可以从 ODBC 连接到新创建的数据库。冲洗并重复要创建和填充的每个数据库。