gpt4 book ai didi

mysql - Cayenne "resets"主键值?

转载 作者:搜寻专家 更新时间:2023-10-30 23:14:20 24 4
gpt4 key购买 nike

我正在使用 Cayenne 将记录添加到 MySQL 数据库,我看到了一些奇怪的行为。

当我运行我的应用程序时,我会创建一个 DataContext,执行一系列添加,然后关闭该应用程序。这很有效,因为我使用整数作为主键,当我向数据库添加记录时,键会自动递增。由于某种原因,第一条记录从 200 开始,然后第二条记录变为 201,依此类推。

但是,如果我停止应用程序,然后再次运行它,主键再次从 200 开始!当然,这会导致抛出异常,因为新记录最终具有重复的主键。看起来当我在启动我的应用程序后使用 DataContext 的 newObject() 创建一个新对象时,Cayenne 不“记得”应用程序之前运行时主键增加了多远。

有谁知道是什么导致了主键值的重置,以及(更重要的)如何阻止它发生???还是我在当前版本的 Cayenne 中发现了错误?我使用的是 3.0.2 版。

有人请指点...

最佳答案

给定表最后使用的 PK 存储在一个名为 AUTO_PK_SUPPORT 的特殊表中。请在您的应用程序重新启动之间检查此表的内容。还要检查您的应用程序 Cayenne 日志以读取和写入 AUTO_PK_SUPPORT。这应该让您了解正在发生的事情。

除此之外,您可以切换到自动递增 PK(请参阅“数据库提供的主键”部分 here)。 MySQL 支持自动递增的 PK 列,如果您可以选择更改模式,这个 IMO 是所有可用的 PK 生成策略中最干净的。 (而且它不需要 AUTO_PK_SUPPORT)。

关于mysql - Cayenne "resets"主键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16465000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com