【问题标题】:Payum Duplicate entry '0' for key 'PRIMARY'Payum 键“PRIMARY”的重复条目“0”
【发布时间】:2013-09-03 22:55:52
【问题描述】:

我正在使用 payumBundle 进行付款设置,但我不断收到此错误:

Duplicate entry '0' for key 'PRIMARY'

这些是我正在使用的课程

/**
 * @ORM\Table(name="payum_tokenized_details")
 * @ORM\Entity
 */
class TokenizedDetails extends BaseTokenizedDetails
{

    protected $id;

    /**
     * @return mixed
     */
    public function getId()
    {
        return $this->id;
    }


}

/**
 * @ORM\Table(name="payum_paypal_express_checkout_payment_details")
 * @ORM\Entity
 */
class PaypalExpressPaymentDetails extends PaymentDetails
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @return mixed
     */
    public function getId()
    {
        return $this->id;
    }


}

我尝试过搜索,但似乎找不到解决方案,通常这是因为主键,但这些都设置正确

【问题讨论】:

  • 您看到的错误意味着数据库拒绝数据,因为它违反了数据结构的定义。您很可能确实在某处 (0) 提供了错误的 ID。通常 0 不是 PRIMARY KEY (PK) 的拟合值。在您的情况下,该值已经在数据库中,这表明您有一个更根本的潜在问题。不仅是副本,而且它已经在其中。在另一个测试系统上恢复您上次工作的备份,并尝试重新创建错误的 0 数据库条目。
  • 谢谢你,很好的解释,知道我知道我要去哪里找。

标签: php symfony payum


【解决方案1】:

TokenizedDetails 实体不能有 id 字段,因为有一个令牌(它是唯一的)并且已经被映射。

看看它是如何在沙盒中定义的:https://github.com/Payum/PayumBundleSandbox/blob/master/src/Acme/PaymentBundle/Entity/TokenizedDetails.php

还有映射:https://github.com/Payum/Payum/blob/master/src/Payum/Bridge/Doctrine/Resources/mapping/TokenizedDetails.orm.xml

注意token字段定义为id。

【讨论】:

  • 因为 0.6.0 TokenizedDetails 已被弃用并在 0.7 中删除。所以现在你必须使用 Token 模型。以前的 token 字段已重命名为 hash
猜你喜欢
  • 2017-08-07
  • 2018-02-20
  • 2014-09-04
  • 2023-03-07
  • 2018-07-11
  • 2012-08-24
  • 2023-04-02
相关资源
最近更新 更多