ソフトウェアをPostgreSQL 9.2から9.6にアップグレードする段階にあり、奇妙な問題が発生しました。PSQLがスキーマを推論していましたが、どうですか?
インストール時にSQLスクリプトが実行され、データベースが作成されます。これはpsql -f
を使用して行われます。これは9.2で正常に動作しましたが、9.6でオブジェクトを作成しないという問題があるようです。私はこれを調べて、SQLスクリプトで何か奇妙なものを見つけました。 create table
声明にはスキーマが存在しないこと
--
-- Name: crawler_run; Type: TABLE; Schema: analytics; Owner: postgres; Tablespace:
--
CREATE TABLE IF NOT EXISTS crawler_run (
... columns, etc.
);
--
ALTER TABLE analytics.crawler_run OWNER TO postgres;
注:テーブルのほとんどは、このようになりステートメントを使用して作成されます。しかし、テーブルは正しいスキーマで作成されており、その後のalter table
ステートメントは失敗していませんでした。
これまでのコメントには関係がありますが、それをサポートするためのドキュメントが見つかりませんでした。
これはどのように機能しましたか?
なぜそれがあなたのために働いたのかわかりませんが、テーブルを作成するときはまず最初にスキーマを修正するか、特定のスキーマのオーナー権限を変更する前にスキーマを変更する必要があります。まもなく:9.2がより寛大で、9.6で修正されましたが、ビルドスクリプトを正しく変更することをお勧めします:) –
['SET search_path ...'](https://www.postgresql。 org/docs/current/static/ddl-schemas.html#DDL-SCHEMAS-PATH)ステートメントをスクリプトの先頭に挿入します。 – pozs
@pozsあなたはそれを持っています。この声明はかなり上のものでしたが、それはトリックであるようです。ありがとう! –