当我尝试使用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”作为前缀?
答案 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;
// ......
因此,您的序列名称无关紧要,您可以像这样指定它。如果我理解你的问题,这应该解决问题