具有名称的表已存在



我正在尝试解决这个问题

做的时候

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出现时,我只找到此映射

/**
* @ORMEntity
* @ORMTable(name="page__block")
* @ORMHasLifecycleCallbacks
*/
class SonataPageBlock extends BaseBlock

因此,此表不应有其他映射。

我还有一个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="AppApplicationSonataPageBundleEntityBlock"
table="page__block"
repository-class="DoctrineORMEntityRepository">
<id name="id" type="integer" column="id">
<generator strategy="AUTO"/>
</id>
</entity>
</doctrine-mapping>

还有其他一些情况,但都在开发中.log

我也有这个在symfony dev/pools的缓存文件中

<?php
namespace SymfonyComponentVarExporterInternal;
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],
],
[]
);

我不知道它有什么问题以及为什么映射不起作用。

对于在搜索中找到此名称的任何人,收到此错误意味着表名已存在于注释中。

@ORMTable(name="page__block")

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

问题是您Block具有表page__block的实体,并且您创建了一个具有相同表名的新实体SonataPageBlock。如果您更改SonataPageBlock的表名,一切都很好,但它将是数据库中的 2 个不同的表。

如果您正在寻找扩展基本实体的方法,您可以阅读有关表继承的信息。

就Sylius而言,有一个实体类可以从插件扩展实体。 我确实通过在config/packages/_sylius.yaml中添加一个类模型来修复它:

sylius_taxonomy:
resources:
taxon:
classes:
model: AppEntityTaxonomyTaxon

相关内容

  • 没有找到相关文章

最新更新