2015-07-02 67 views
7

我試圖建立的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在只讀事務

爲什麼會創造我的本地計算機上的只讀數據庫?我可以改變這個嗎?

+0

運行腳本?這個用戶有哪些訪問權限?可以創建數據庫? – Renzo

回答

6

伸手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

6

通常這類錯誤的最可能的原因是:

  • 試圖創建一個只讀副本語句(整個實例是隻讀的)。

  • <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_onlyONpostgresql.conf文件,並設置爲OFF數據庫postgres,聲明psql的調用連接到一個,通過ALTER DATABASE聲明取代了配置文件。

這將是爲什麼CREATE DATABASE作品,但後來只要它連接到不同的數據庫\c,會議的default_transaction_read_only設置將翻轉到ON

當然,這將是一個非常怪異和不尋常的配置,但是。

+0

看着我的postgresql.conf文件和'default_transaction_read_only '設置爲關閉。 – ltrainpr

相關問題