我有与此处报告的相同的问题:Doctrine 2.2 想要重新创建我的所有表
我正在使用 PostgreSQL,我的表位于公共模式中。
app/console 学说:schema:update 想要重新创建我的所有表,显然是因为它在用户模式中查找,而不是公开的。我的 Symfony 应用程序工作正常,但看起来有点奇怪。
使用 Symfony 2.2 / Doctrine 2.2 我在哪里指定模式?我似乎在任何文档中都找不到它。
如果您使用
public
模式,则无需执行任何特殊操作,因为 PostgreSQL 会自动回退到它。
但是,如果您想指定另一个模式 — 或者强制使用
public
模式以防 PostgreSQL 由于某种原因回退到另一个模式 — @Table
注释具有 schema
属性:
use Doctrine\ORM\Mapping\Table;
/**
* @Table(schema="some_schema")
*/
class Entity
{
// ...
}
对于 symfony 5.4 在实体文件中使用它
use Doctrine\ORM\Mapping as ORM;
#[ORM\Table(name: "schema_name.table_name")]
class Entity
{
...
}
我不知道它是否适用于最新版本
我遇到了同样的问题。 Doctrine 使用以下查询来检索数据库模式信息:
SELECT * FROM information_schema.schemata
当用户缺乏足够的权限或不是架构的所有者时,查询不会返回任何结果。
我通过修改公共模式的所有者以匹配 Doctrine 使用的用户解决了该问题:
ALTER SCHEMA public OWNER TO my_user