如何指定 Doctrine 2.2 / Symfony 2.2 和 PostgreSQL 使用哪个模式?

问题描述 投票:0回答:3

我有与此处报告的相同的问题:Doctrine 2.2 想要重新创建我的所有表

我正在使用 PostgreSQL,我的表位于公共模式中。

app/console 学说:schema:update 想要重新创建我的所有表,显然是因为它在用户模式中查找,而不是公开的。我的 Symfony 应用程序工作正常,但看起来有点奇怪。

使用 Symfony 2.2 / Doctrine 2.2 我在哪里指定模式?我似乎在任何文档中都找不到它。

symfony doctrine-orm
3个回答
10
投票

如果您使用

public
模式,则无需执行任何特殊操作,因为 PostgreSQL 会自动回退到它。

但是,如果您想指定另一个模式 — 或者强制使用

public
模式以防 PostgreSQL 由于某种原因回退到另一个模式 —
@Table
注释具有
schema
属性
:

use Doctrine\ORM\Mapping\Table;

/**
 * @Table(schema="some_schema")
 */
class Entity 
{
    // ...
}

1
投票

对于 symfony 5.4 在实体文件中使用它

use Doctrine\ORM\Mapping as ORM;

#[ORM\Table(name: "schema_name.table_name")]
class Entity
{
...
}

我不知道它是否适用于最新版本


0
投票

我遇到了同样的问题。 Doctrine 使用以下查询来检索数据库模式信息:

SELECT * FROM information_schema.schemata

当用户缺乏足够的权限或不是架构的所有者时,查询不会返回任何结果。

我通过修改公共模式的所有者以匹配 Doctrine 使用的用户解决了该问题:

ALTER SCHEMA public OWNER TO my_user
© www.soinside.com 2019 - 2024. All rights reserved.