私のYii2はPostgreSQLでセットアップされています。プロジェクトごとに個別のデータベースを使用する代わりに、プロジェクトごとにスキーマを使用するのが好きです。後のセットアップでの問題は、構成からデフォルトスキーマ「defaultSchema」を選択する方法がわからないことです。
移行コマンドを実行するとデフォルトで「パブリック」スキーマになるため、移行テーブルに問題があります。デフォルトの「パブリック」スキーマは、データベースユーザーのsearch_pathの使用も防止します。 「search_path = myschema、public」を使用してdbユーザーを設定しましたが、実行時にYiiがテーブル名でスキーマを検索し、そうでない場合は、追加の構成なしでは移行を使用できません。提供されたものはdefaultSchemaにフォールバックするため、データベースユーザーのsearch_pathに何があっても、「public.migrations」が使用されます。
Yii2でデフォルトスキーマを設定する最良の方法は何ですか?スキーマ選択用に指定された構成パラメーターはありますか?結局のところ、各接続は1つのスキーマを使用するので、接続構成を介してそれを設定するとよいでしょう。
defaultSchemaを指定するには、db.phpのこのバリアントを試してください
return [
'class' => 'yii\db\Connection',
'dsn' => 'pgsql:Host=localhost;dbname=db_name',
'username' => 'db_username',
'password' => 'db_password',
'charset' => 'utf8',
'schemaMap' => [
'pgsql'=> [
'class'=>'yii\db\pgsql\Schema',
'defaultSchema' => 'public' //specify your schema here
]
], // PostgreSQL
];