【问题标题】:Integrity constraint violation: 1062 Duplicate entry '23' for key 'UNIQ_BE2DDF8CBCF5E72D'完整性约束违规:1062 键 'UNIQ_BE2DDF8CBCF5E72D' 的重复条目 '23'
【发布时间】:2016-02-27 16:40:34
【问题描述】:

我是 symfony 的初学者。

我安装了固定装置 Bundle 。我想在我的表格中添加产品,该表格与其他两个表格媒体和类别相关联。使用参考并进行更新,我可以在类别表和媒体中看到添加的结果,但对于 Products 表,我得到一个错误。 这里是produits.php类的代码

/**
 * @ORM\ManyToOne(targetEntity="Ecommerce\EcommerceBundle\Entity\Categories",cascade={"persist","remove"})
 * @ORM\JoinColumn(nullable=false)
 */
private $categorie;

这里是 produitsData.php 类的代码

namespace Ecommerce\EcommerceBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Ecommerce\EcommerceBundle\Entity\Produits;

class ProduitsData extends AbstractFixture implements OrderedFixtureInterface
{
    public function load(ObjectManager $manager)
    {
        $produit1 = new Produits();
        $produit1->setCategorie($this->getReference('categorie1'));
        $produit1->setDescription("Le poivron rouge est un groupe de cultivars de l'espèce Capsicum annuum.");
        $produit1->setDisponible('1');
        $produit1->setImage($this->getReference('media3'));
        $produit1->setNom('Poivron rouge');
        $produit1->setPrix('1.99');
        $produit1->setTva($this->getReference('tva2'));
        $manager->persist($produit1);
        $produit2 = new Produits();
        $produit2->setCategorie($this->getReference('categorie1'));
        $produit2->setDescription("Piment est généralement associé à la saveur du piquant (pimenté).");
        $produit2->setDisponible('1');
        $produit2->setImage($this->getReference('media4'));
        $produit2->setNom('Piment');
        $produit2->setPrix('3.99');
        $produit2->setTva($this->getReference('tva2'));
        $manager->persist($produit2);
        $produit3 = new Produits();
        $produit3->setCategorie($this->getReference('categorie1'));
        $produit3->setDescription("La tomate est une espèce de plantes herbacées de la famille des Solanacées, originaire du nord-ouest de l'Amérique du Sud.");
        $produit3->setDisponible('1');
        $produit3->setImage($this->getReference('media5'));
        $produit3->setNom('Tomate');
        $produit3->setPrix('0.99');
        $produit3->setTva($this->getReference('tva2'));
        $manager->persist($produit3);

        $produit4 = new Produits();
        $produit4->setCategorie($this->getReference('categorie1'));
        $produit4->setDescription("Le poivron vert est un groupe de cultivars de l'espèce Capsicum annuum.");
        $produit4->setDisponible('1');
        $produit4->setImage($this->getReference('media6'));
        $produit4->setNom('Poivron vert');
        $produit4->setPrix('2.99');
        $produit4->setTva($this->getReference('tva2'));
        $manager->persist($produit4);

        $produit5 = new Produits();
        $produit5->setCategorie($this->getReference('categorie2'));
        $produit5->setDescription("Le raisin est le fruit de la Vigne. Le raisin de la vigne cultivée Vitis vinifera est un des fruits les plus cultivés au monde, avec 68 millions de tonnes produites en 2010.");
        $produit5->setDisponible('1');
        $produit5->setImage($this->getReference('media7'));
        $produit5->setNom('Raisin');
        $produit5->setPrix('0.97');
        $produit5->setTva($this->getReference('tva2'));
        $manager->persist($produit5);

        $produit6 = new Produits();
        $produit6->setCategorie($this->getReference('categorie2'));
        $produit6->setDescription("L’orange est un agrume, fruit des orangers, des arbres de différentes espèces de la famille des Rutacées ou d'hybrides de ceux-ci.");
        $produit6->setDisponible('1');
        $produit6->setImage($this->getReference('media8'));
        $produit6->setNom('Orange');
        $produit6->setPrix('1.20');
        $produit6->setTva($this->getReference('tva2'));
        $manager->persist($produit6);

        $manager->flush();
    }

    public function getOrder()
    {
        return 4;
    }
}

这里是例外:

C:\wamp\www\ecommerce>php app/console doctrine:fixtures:load
Careful, database will be purged. Do you want to continue y/N ?y
  > purging database
> loading [1] Ecommerce\EcommerceBundle\DataFixtures\ORM\MediaData
> loading [2] Ecommerce\EcommerceBundle\DataFixtures\ORM\CategoriesData
> loading [3] Ecommerce\EcommerceBundle\DataFixtures\ORM\TvaData
> loading [4] Ecommerce\EcommerceBundle\DataFixtures\ORM\ProduitsData


  [Doctrine\DBAL\DBALException]
 An exception occurred while executing 'INSERT INTO produits (nom, description, prix, disponible, image_id, categorie_id, tva_id) VALUES (?, ?, ?, ?, ?
, ?, ?)' with params ["Piment", "Piment est g\u00e9n\u00e9ralement associ\u
00e9 \u00e0 la saveur du piquant (piment\u00e9).", "3.99", "1", 92, 23, 24]
:
  SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '23'
  for key 'UNIQ_BE2DDF8CBCF5E72D'



  [PDOException]
   SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '23'
for key 'UNIQ_BE2DDF8CBCF5E72D'


doctrine:fixtures:load [--fixtures [FIXTURES]] [--append] [--em EM] [--shard SHA
RD] [--purge-with-truncate] [--multiple-transactions]

请帮忙 :( :(

【问题讨论】:

    标签: php symfony doctrine-orm


    【解决方案1】:

    categorie_id 属性似乎有一个唯一键。确保在 Produits 实体文件中,

    Ecommerce\EcommerceBundle\Entity\Produits
    

    类别的@ORM\Column 设置为unique = false。之后您需要更新架构中的更改,

    php app/console doctrine:schema:update --force
    

    然后再次尝试运行固定装置。如果它继续给出完整性约束错误。检查可能具有唯一键的其他属性。如果一切都失败了,请尝试删除数据库并重新创建,

    php app/console doctrine:database:drop --force
    php app/console doctrine:database:create
    php app/console doctrine:schema:update --force
    php app/console doctrine:fixtures:load
    

    【讨论】:

    • @ORM\Column 或 @ORM\JoinColumn ?
    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2013-10-21
    • 2015-06-18
    • 2016-05-23
    • 2015-05-18
    • 2020-12-20
    相关资源
    最近更新 更多