![](/img/trans.png)
[英]How to make the 'public' schema default in a Scala Play project that uses PostgreSQL?
[英]how can I change the default owner of the public schema on postgresql database?
當我用我的用戶創建數據庫時,公共模式是用“ postgres”用戶創建的。 我可以在此架構中創建和刪除表,但不能刪除架構或更改所有者。
我正在為php項目安裝Phinx遷移。 這是一個成熟的項目,有很多表。 對於在up()方法上的第一次遷移,我將使用數據庫的模式加載一個sql文件,而在down()方法上,我將刪除模式(表,觸發器,過程...)
class FirstMigration extends AbstractMigration
{
public function up()
{
$schema= file_get_contents('./database/migrations/schemaDB.sql');
$this->execute($schema);
}
public function down()
{
$this->execute("DROP SCHEMA public CASCADE");
$this->execute("CREATE SCHEMA public");
}
}
回滾時出現錯誤:
特權不足:7錯誤:您必須是公共架構的所有者。
創建數據庫時,我選擇用戶“ citest”
但是默認情況下,公共架構的所有者是“ postgres”!
而且我無法更改。
我的用戶是數據庫的所有者,但不是用戶“ postgres”的公共架構的所有者。
public
模式的默認用戶由Postgres創建新數據庫時復制的模板數據庫(稱為template1
)設置。 如果要更改新創建的數據庫的默認值,則需要修改template1
。 例如,您可以從template1
DROP SCHEMA public
。 現在,您無需通過public
就可以開始遷移,因為它不存在。 當然,要執行此操作,您將(至少暫時)使用具有編輯template1
權限的用戶登錄。
有關更多信息,請在Postgres郵件列表https://www.postgresql.org/message-id/CAFjNrYu8GqD%3D17DimG9QtWoV1hPviqHxaZp2umWAPkpUOFAGYg%40mail.gmail.com中閱讀此線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.