2014-10-18 135 views
4

我的Yii2使用PostgreSQL进行设置。我不想为每个项目使用单独的数据库,而是喜欢为每个项目使用模式。稍后设置的问题是我无法弄清楚如何通过配置选择默认模式“defaultSchema”。如何在Yii2中设置默认模式

我遇到了迁移表的问题,因为它在运行迁移命令时默认为“公共”模式。默认的“公共”模式也阻止使用数据库用户的search_path。尽管我使用“search_path = myschema,public”设置了我的数据库用户,但我仍然无法在没有额外配置的情况下使用迁移,因为在运行期间,Yii会在表名称中查找模式,并且如果未提供,则会退回到defaultSchema,因此无论你在数据库用户的search_path中仍然会使用“public.migrations”。

在Yii2中设置默认模式的最佳方式是什么?是否有为模式选择指定的配置参数?毕竟每个连接都将使用一个模式,并且通过连接配置进行设置会很好。

+0

我已经找到一种方法如何设置迁移表架构的配置。在配置中添加迁移表,其中包含Schematic: ''controllerMap'=>'migrate'=>'''>'yii \ console \ controllers \ MigrateController', 'migrationTable'=>'myschema.migration ', ], ], ' – hserge 2014-10-18 07:51:20

回答

12

尝试db.php中的这个变体指定defaultSchema

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 
]; 
+0

这正是我一直在寻找的!谢谢@ user1852788 – hserge 2014-10-18 08:00:24

相关问题