0
我想在PostgreSQL中爲表創建數據庫的腳本。 我創建deploy_db.bat:PSQL:當前事務中止,直到事務塊結束時忽略命令
@echo off
"C:\Program Files\PostgreSQL\9.4\bin\psql.exe" -h localhost -p 5433 -U postgres -d postgres -f run_main.sql
pause
我run_main.sql:
BEGIN;
\i create_db.sql
\i tableA.sql
COMMIT;
create_db.sql:
CREATE DATABASE test;
DROP SCHEMA IF EXISTS test CASCADE;
CREATE SCHEMA test
AUTHORIZATION postgres;
tableA.sql:
CREATE TABLE test.tableA(
id serial PRIMARY KEY,
name text,
age INTEGER
);
所以,我跑deploy_db.bat看到:
BEGIN
psql:create_db.sql:1: ERROR: CREATE DATABASE cannot run inside a transaction block
psql:create_db.sql:3: ERROR: current transaction is aborted, commands ignored until end of transaction block
ROLLBACK
但是,爲什麼呢?如何解決它?
這個錯誤告訴你到底出了什麼問題。您不能在'BEGIN ... COMMIT'塊中運行'CREATE DATABASE'。 –
哪裏需要設置塊「CREATE DATABASE」?如何正確呢? –
不用在SQL腳本中創建數據庫,而是查看[createdb工具](https://www.postgresql.org/docs/current/static/app-createdb.html)。首先在您的批處理中執行它,然後連接到新創建的數據庫。 – Abelisto