symfony 名为的表已存在

mm5n2pyu  于 2022-11-16  发布在  其他
关注(0)|答案(4)|浏览(243)

我正在努力解决这个问题
当做了

php bin/console doctrine:schema:update --dump-sql

我越来越

In SchemaException.php line 108:
The table with name 'chris_test_sonata.page__block' already exists.

很明显,这个表并不存在于我的数据库中。为了确保它与缓存无关,我甚至用我刚创建的一个新数据库进行了操作,结果是一样的。
在项目中搜索page__block时,只找到此Map

/**
 * @ORM\Entity
 * @ORM\Table(name="page__block")
 * @ORM\HasLifecycleCallbacks
 */
class SonataPageBlock extends BaseBlock

因此,此表不应有其他Map。
我还有一个block.orm.xml

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
    <!--
         This file has been generated by the EasyExtends bundle ( https://sonata-project.org/easy-extends )

         References :
            xsd                  : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd
            xml mapping          : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en
            association mapping  : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en
    -->
    <entity
        name="App\Application\Sonata\PageBundle\Entity\Block"
        table="page__block"
        repository-class="Doctrine\ORM\EntityRepository">

        <id name="id" type="integer" column="id">
            <generator strategy="AUTO"/>
        </id>

    </entity>
</doctrine-mapping>

还有一些其他事件,但都在dev.log中
我还在symfony dev/pools的缓存文件中保存了该文件

<?php

namespace Symfony\Component\VarExporter\Internal;

return $getExpiry ? PHP_INT_MAX : Hydrator::hydrate(
    $o = [
        clone (($p = &Registry::$prototypes)['Doctrine\\ORM\\Mapping\\Entity'] ?? Registry::p('Doctrine\\ORM\\Mapping\\Entity')),
        clone ($p['Doctrine\\ORM\\Mapping\\Table'] ?? Registry::p('Doctrine\\ORM\\Mapping\\Table')),
        clone ($p['Doctrine\\ORM\\Mapping\\HasLifecycleCallbacks'] ?? Registry::p('Doctrine\\ORM\\Mapping\\HasLifecycleCallbacks')),
    ],
    null,
    [
        'stdClass' => [
            'name' => [
                1 => 'page__block',
            ],
        ],
    ],
    [
        $o[0],
        $o[1],
        $o[2],
    ],
    []
);

我不知道它出了什么问题,为什么Map不起作用。

gajydyqb

gajydyqb1#

问题是你有Block实体和表page__block,你创建了一个新的实体SonataPageBlock与相同的表名。如果你改变表名SonataPageBlock一切都很好,但它将是2个不同的数据库表。
如果您正在寻找扩展基本实体的方法,您可以阅读有关表继承的信息。

zaq34kh6

zaq34kh62#

对于在搜索中发现此错误的任何人,收到此错误意味着表名已存在于注解中。
@ORM\Table(name="page__block")

rqdpfwrv

rqdpfwrv3#

我在ManyToMany关系中遇到了这个问题。我声明了两次关联表(每个实体一次)

mrwjdhj3

mrwjdhj34#

在我的Sylius案例中,有一个实体类扩展了插件中的实体。我通过在config/packages/_sylius.yaml中添加一个类模型来修复它:

sylius_taxonomy:
    resources:
        taxon:
            classes:
                model: App\Entity\Taxonomy\Taxon

相关问题