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)を参照してください。最初に一括して実行し、新しく作成したDBに接続します。 – Abelisto