【问题标题】:Duplicate key value violates unique constraint, CakePHP重复键值违反唯一约束,CakePHP
【发布时间】:2013-03-15 00:59:15
【问题描述】:

我已将我的 postgres 数据库设置为已填充并应用了所有约束。我在所有桌子上都烤蛋糕并开始测试。我收到了这个错误:

错误:SQLSTATE[23505]:唯一违规:7 错误:重复键值 违反唯一约束“fasciculos_pkey1”细节:键(id)=(7) 已经存在了。

SQL 查询:

INSERT INTO "xconv2"."fasciculos" ("created", "user_id", "revista_id", “volume”、“issue”、“svol”、“snum”、“issuedate”、“scheme”、“reftype”、 "cliente_id", "output_packtype", "modified") 值 ('now()', 4, 144, '4', '4', '4', '4', '4', '4', '4', 1, '/var/www', '2013-03-25')

pk (curr_val = 545) 默认情况下确实具有非空和唯一约束,但是当我尝试使用 add.ctp 添加新记录时,cake 不会考虑为 PK 创建的序列的下一个值。似乎它只是重新开始......我认为这是缓存问题,但不确定。

有什么帮助吗?

【问题讨论】:

    标签: sql postgresql cakephp constraints primary-key


    【解决方案1】:

    有几点:

    • 我在 SQL 语句中没有看到键 7 或 545;那么这些值是从哪里来的呢?
    • created 列被填充为 字符串 形式的“now()”,而不是来自 NOW() 函数的值。在您的 PHP 代码中填写正确的日期时间(date('Y-m-d H:i:s') 通常可以解决问题)。

    无论如何,如果您在循环中插入记录,或者只是多个具有相同模型的记录,请不要忘记在模型上调用create(),否则 ID 将是相同的。

    【讨论】:

    • 这些值应该来自数据库,因为我创建了序列,默认值为 nextval。我的 id 列是串行的,postgres 默认创建序列。如果我为其他数据库创建相同的蛋糕,它工作正常。我的意思是相同的数据库,相同的蛋糕,但不同的服务器......正如我所说......我认为这是缓存问题。
    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 2022-01-13
    • 2020-03-27
    • 2013-06-23
    • 2016-06-12
    • 2016-11-27
    • 2018-03-14
    • 2016-09-27
    相关资源
    最近更新 更多