有了教义,我无法为Postgres获得正确的序列名称

时间:2014-01-07 10:34:00

标签: php postgresql symfony doctrine-orm sequence

当我尝试使用doctrine在Postgres数据库中插入新实体时,我收到以下错误:

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "schema.table_id_seq" does not exist

或者在我的数据库中,序列称为“schema.seq_table_id”

正如我们在Doctrine \ ORM \ Mapping \ ClassMetadataFactory文件中看到的那样,序列名称设置如下:

$sequenceName   = $class->getTableName() . '_' . $columnName . '_seq';

无论如何都要指定序列,以便将“seq”作为前缀?

1 个答案:

答案 0 :(得分:1)

在我看来,您的实体已被定义为错误的序列名称。您可以在实体类中指定带有注释的序列名称,如下所示:

use Doctrine\ORM\Mapping as ORM;

class MyTable
{
    /**
     * @var integer $tableId
     *
     * @ORM\Column(name="table_id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="SEQUENCE")
     * @ORM\SequenceGenerator(sequenceName="schema.seq_table_id", allocationSize=1, initialValue=1)
     */
    private $tableId;

    // ......

因此,您的序列名称无关紧要,您可以像这样指定它。如果我理解你的问题,这应该解决问题