table 名称已存在
The table with name already exist
我正在尝试解决这个问题
做的时候
php bin/console doctrine:schema:update --dump-sql
我得到
In SchemaException.php line 108:
The table with name 'chris_test_sonata.page__block' already exists.
显然,table 不存在于我的数据库中。为了确定它不是缓存相关的东西,我什至用我刚创建的新数据库进行了操作,结果是一样的。
当我在我的项目中搜索 page__block 次时,我只找到这个映射
/**
* @ORM\Entity
* @ORM\Table(name="page__block")
* @ORM\HasLifecycleCallbacks
*/
class SonataPageBlock extends BaseBlock
所以这个 table.
不应该有其他映射
我也有一个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],
],
[]
);
我不知道它有什么问题,也不知道为什么映射不起作用。
问题是您有 Block
个具有 table page__block
的实体,并且您创建了一个具有相同 table 名称的新实体 SonataPageBlock
。如果您更改 SonataPageBlock
的 table 名称,一切都很好,但它在数据库中将是 2 个不同的 table。
如果您正在寻找扩展基础实体的方法,您可以阅读 Table Inheritance。
对于在搜索中找到此内容的任何人,收到此错误意味着 table 名称已存在于注释中。
@ORM\Table(name="page__block")
我在处理多对多关系时遇到了这个问题。我声明了关联 table 两次(每个实体一次)
我正在尝试解决这个问题
做的时候
php bin/console doctrine:schema:update --dump-sql
我得到
In SchemaException.php line 108:
The table with name 'chris_test_sonata.page__block' already exists.
显然,table 不存在于我的数据库中。为了确定它不是缓存相关的东西,我什至用我刚创建的新数据库进行了操作,结果是一样的。
当我在我的项目中搜索 page__block 次时,我只找到这个映射
/**
* @ORM\Entity
* @ORM\Table(name="page__block")
* @ORM\HasLifecycleCallbacks
*/
class SonataPageBlock extends BaseBlock
所以这个 table.
不应该有其他映射我也有一个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],
],
[]
);
我不知道它有什么问题,也不知道为什么映射不起作用。
问题是您有 Block
个具有 table page__block
的实体,并且您创建了一个具有相同 table 名称的新实体 SonataPageBlock
。如果您更改 SonataPageBlock
的 table 名称,一切都很好,但它在数据库中将是 2 个不同的 table。
如果您正在寻找扩展基础实体的方法,您可以阅读 Table Inheritance。
对于在搜索中找到此内容的任何人,收到此错误意味着 table 名称已存在于注释中。
@ORM\Table(name="page__block")
我在处理多对多关系时遇到了这个问题。我声明了关联 table 两次(每个实体一次)