我試圖建立的pgexercises數據在我的本地機器。當我運行時:psql -U <username> -f clubdata.sql -d postgres -x
我收到錯誤:psql:clubdata.sql:6: ERROR: cannot execute CREATE SCHEMA in a read-only transaction
。錯誤:無法執行CREATE TABLE在只讀事務
爲什麼會創造我的本地計算機上的只讀數據庫?我可以改變這個嗎?
我試圖建立的pgexercises數據在我的本地機器。當我運行時:psql -U <username> -f clubdata.sql -d postgres -x
我收到錯誤:psql:clubdata.sql:6: ERROR: cannot execute CREATE SCHEMA in a read-only transaction
。錯誤:無法執行CREATE TABLE在只讀事務
爲什麼會創造我的本地計算機上的只讀數據庫?我可以改變這個嗎?
伸手pgexercises.com,他們能夠幫助我。
我跑這些命令(單獨):
psql -U <username> -d postgres
begin;
set transaction read write;
alter database exercises set default_transaction_read_only = off;
commit;
\q
然後我放棄了從終端dropdb exercises
數據庫,您正在使用哪個用戶名再次psql -U <username> -f clubdata.sql -d postgres -x -q
通常這類錯誤的最可能的原因是:
試圖創建一個只讀副本語句(整個實例是隻讀的)。
<username>
有default_transaction_read_only
設置爲ON
數據庫有default_transaction_read_only
設置爲ON
提到的腳本會在其第一行:
CREATE DATABASE exercises;
\c exercises
CREATE SCHEMA cd;
和你彙報該錯誤發生在CREATE SCHEMA
在第6行,而不是之前。
這意味着CREATE DATABASE
不工作,當<username>
運行。 如果上述任何原因直接適用,它將不起作用。這在技術上解釋這種
一種可能性是default_transaction_read_only
將ON
在postgresql.conf
文件,並設置爲OFF
數據庫postgres
,聲明psql的調用連接到一個,通過ALTER DATABASE
聲明取代了配置文件。
這將是爲什麼CREATE DATABASE
作品,但後來只要它連接到不同的數據庫\c
,會議的default_transaction_read_only
設置將翻轉到ON
。
當然,這將是一個非常怪異和不尋常的配置,但是。
看着我的postgresql.conf文件和'default_transaction_read_only '設置爲關閉。 – ltrainpr
運行腳本?這個用戶有哪些訪問權限?可以創建數據庫? – Renzo