自动递增跳过数字?

2023-12-24

注意:我是数据库和 PHP 新手

我有一个order设置为的列auto increment and unique.

在我的 PHP 脚本中,我使用 AJAX 来获取新数据,但问题是,order跳过数字并且明显更高,因此迫使我在插入数据时手动更新数字。在这种情况下我最终会改变782 to 38.

$SQL = "INSERT IGNORE INTO `read`(`title`,`url`) VALUES\n ".implode( "\n,",array_reverse( $sql_values ) );

我怎样才能让它增加+1?


如果 INSERT 失败,MySQL 5.1 及更高版本中的默认 auto_increment 行为将“丢失”自动增量值。也就是说,它每次增加 1,但如果 INSERT 失败则不会撤消增量。丢失约 750 个值的情况并不常见,但并非不可能(我咨询过一个站点,该站点每次成功插入都会跳过 1500 个值)。

你可以改变innodb_autoinc_lock_mode=0使用 MySQL 5.0 行为并避免在某些情况下丢失值。看http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html更多细节。

另一件要检查的事情是auto_increment_increment配置变量。默认情况下为 1,但您可能已更改此值。同样,将其设置为高于 1 或 2 的情况非常罕见,但也是可能的。

我同意其他评论者的观点,autoinc 列旨在是唯一的,但不一定是连续的。你可能不应该太担心它,除非你将 autoinc 值提高得如此之快以至于你可能会超出 INT 的范围(这发生在我身上)。


你究竟是如何修复它跳过 1500 次插入的?

INSERT 失败的原因是另一列带有 UNIQUE 约束,并且 INSERT 尝试在该列中插入重复值。请阅读我链接到的手册页,详细了解为什么这很重要。

修复方法是先执行 SELECT 以检查该值是否存在,然后再尝试插入它。这违背了常识,即仅尝试插入并处理任何重复的键异常。但在这种情况下,失败的 INSERT 的副作用导致 auto-inc 值丢失。首先执行 SELECT 几乎消除了所有此类异常。

But you also即使您先选择,也必须处理可能的异常。你仍然有竞争条件。

你说得对! innodb_autoinc_lock_mode=0 非常有效。

对于你的情况,我想知道why很多插入都失败了。我怀疑,像许多 SQL 开发人员一样,在 AJAX 处理程序中执行 INSERT 后,您不会检查成功状态,因此您永远不知道其中有很多都失败了。

他们可能仍然失败,你只是没有失去自动公司 ID 作为副作用。您应该真正诊断为什么会发生如此多的失败。您可能生成不完整的数据,或者运行超出必要数量的事务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动递增跳过数字? 的相关文章

  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 通过 facebook graph API 检索 facebook 用户的邮政编码

    我正在尝试使用 facebook graph API 检索用户的邮政编码 我正在使用以下代码 代码在php ini中 facebook new Facebook array appId gt APP ID secret gt APP SEC
  • 如何在 PHP 中使用 cURL 发出同时包含 GET 和 POST 参数的请求?

    其他人已经问过如何从 perl java bash 等执行此操作 但我需要在 PHP 中执行此操作 并且我没有看到任何已提出的专门与 PHP 相关的问题 或包含 PHP 的答案 My code ch curl init url curl s
  • Laravel 5 中的自定义验证器

    我正在将 Laravel 应用程序从 4 升级到 5 但是 我有一个自定义验证器 但无法运行 在L4中 我做了一个验证器 php文件并将其包含在全局 php using require app path validators php 我尝试
  • 使用php将数据存储到文本文件中?

    我正在尝试将数据存储在文本文件中 例如使用 php 将数组存储到文本文件中 而不是存储到 mysql 数据库中 例如 这里是要存储在文本文件中的数据 name gt john age gt 25 location gt australia
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • 如何在列上创建外键,该列的每条记录都可能引用多个表之一中的列?

    我正在创建一个社交网络 它有新闻 照片等多个实体 可以有评论 由于所有评论都具有相同的列并且行为方式相同 唯一的区别是它们的类型 新闻 照片或将来添加的其他内容 我决定为所有评论创建一个表 其中的列名为type 它工作得很好 直到我决定将外
  • phpunit测试调用其他需要mock的类方法的方法

    我正在尝试创建一个非常标准的单元测试 在其中调用一个方法并断言它的响应 但是我正在测试的方法调用同一类中的另一个方法 该方法做了一些繁重的工作 我想模拟该方法 但仍按原样执行我正在测试的方法 仅使用从调用另一种方法返回的模拟值 我简化了示例
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • 如何在 OS X 上使用 OpenSSL 1.0.1 编译 PHP 5.5.19

    我已经安装了 OpenSSL 1 0 1j usr local ssl现在我尝试使用此版本的 OpenSSL 编译 PHP 5 5 19 这是我的配置过程 export CFLAGS arch x86 64 export CXXFLAGS
  • suhosin.mt_srand.ignore 在 PHP 中一致洗牌数组的解决方法?

    我有一个 PHP 脚本 需要随机化一个具有一致结果的数组 这样它就可以向用户呈现前几个项目 然后如果他们愿意 他们可以从同一个打乱的集合中提取更多结果 我目前使用的是这个 基于我相信的 Fisher Yates 算法 function sh
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 检查条件并通过 Zend 中的 Regex 识别 url 中的模式

    我正在实现 Zend Regex 路由 并且必须对 url 执行多次检查 例如 如果这是我的网址 http localhost application public index php module controller action 这是
  • 从数据库填充复选框

    我有两个表 第一个由与名称关联的 id 组成 1 汽车 2 火车 3 普通 ETC 第二个表由两个字段 user id 和第一个表中的 id 组成 例如 1 1 2 1 3 当用户转到该页面时 我试图重新填充选定的复选框 首先 您查询数据库
  • 如何在 Zend Framework 3 中注册自定义表单视图助手

    我正在将继承的 Zend Framework 2 应用程序迁移到 Zend Framework 3 并且在注册自定义表单视图助手时遇到了一些困难 这些助手在应用程序使用版本 2 时起作用 主要用于添加标签属性以实现可访问性 例如 这是一个自
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • 使用 where 进行 select 语句时,HSQLDB 用户缺乏权限或未找到对象错误

    我的数据库使用 SQuirrel SQL 客户端版本 3 5 3 和 HSQLDB 我已经能够为其指定相应的驱动程序 内存中 并创建一个别名 我创建了一个表 CREATE TABLE ENTRY NAME VARCHAR 100 NOT N
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教

随机推荐

  • React-Native 通过代理获取

    我如何设置选项fetchReact Native 的方法通过代理调用网络服务器 目前我正在使用axios https github com mzabriskie axios但这行不通 在获取中添加主机标头后 我可以通过 charles pr
  • 龙卷风发送有关事件的消息

    我用 Python 创建一个程序 以未知的时间间隔读取数据流 该程序还通过 websocket 发送此数据 该程序是服务器 它将接收到的数据发送给客户端 这是现在服务器的代码 class WebSocketHandler tornado w
  • 如何实现“真正的”异步

    在他的回答中这个问题 https stackoverflow com questions 27790468 is it possible to await an io operation that is not declared as as
  • 出于 CSS 目的将电视检测为客户端浏览器的所有可能方法

    我有遵循响应式网页设计技术的网络应用程序 我想提供不同 更大 的字体大小TV和不同的 较小的 screen即使两者具有相同的分辨率 为什么 因为当用户使用 32 英寸显示器作为屏幕时 他可能比将其用作电视的用户坐得更近 代码 body fo
  • 未实现的功能:WINDOW/ORDER BY

    我正在使用嵌入式 Apache Derby 数据库并执行以下查询 SELECT someUniqueValue row number over ORDER BY someUniqueValue as ROWID FROM myTable s
  • Java 中异常的 throws 关键字

    当你这样做时 public class Blah public void doBlah throws BlahException 添加什么是throws BlahException真的吗 它基本上是否将任何例外归为一类 即如果有异常 无论是
  • Django admin 可以通过 related_name 处理一对多关系吗?

    Django 管理员很乐意通过 HTML 表单字段支持多对一和多对多关系 允许分别选择一个或多个选项 甚至还有一个不错的 Javascriptfilter horizontal小部件来提供帮助 我试图通过 related name 从一对多
  • “非对称”成对距离矩阵

    假设要比较三个序列 a b c 传统上 生成的 3 3 成对距离矩阵为对称的 表示a到b的距离等于b到a的距离 我想知道 TraMineR 是否提供了某种方法来生成不对称的成对距离矩阵 不 TraMineR 不会产生 不对称 的差异 这正是
  • 用于 boost::uuid 转换的字符串

    我刚刚开始在 C 中使用 boost 我只是想问几个与 uuid 相关的问题 我正在加载一个文件 该文件需要我知道 uuid 以便我可以将一些对象链接在一起 因此 我正在尝试编写自己的 uuid 但我不确定字符串等是否有任何特殊条件 因为我
  • 服务器遇到内部错误或配置错误,无法完成您的请求[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 The server encountered an internal error or misconfiguration and was unable
  • 模块之间共享的 ZF2 型号

    我刚刚开始为一个新项目设置一个新的 ZF2 应用程序 基于 ZF2 骨架 并且正在查看他们的教程Models http framework zend com manual 2 1 en user guide database and mod
  • 如何让 Perl 调试器不停止在“子例程调用深度 100 级”

    我正在使用一个又大 又旧 又乱 又臃肿的框架 它通常会深入 100 级以上的子例程调用 Perl 调试器认为适合停止并告诉我这个事实 一遍又一遍 Package Stash name usr local perl 5 10 1 lib si
  • 即使在公共页面登录也是匿名令牌

    我在设置安全性时遇到一些问题 我希望匿名成员和登录成员都可以访问该页面 我希望它根据情况显示不同的内容 事实上 我想在继续时仍然以会员身份登录 我想要公开访问的页面是 profile 我这样设置 security yml jms secur
  • 带有访客组件的父子组件树

    在 Angular 2 中 我有一个组件层次结构 然而 在树中 我需要显示另一个与对象层次结构分离的元素 它将是一个旋转器组件 不知怎的 它不想出现
  • 如何找到最大的轮廓?

    我写了一个脚本python它利用了max 方法 我试图在 C 中重新创建一个类似的程序 但我无法获取掩模中最大轮廓的值 我尝试过使用最大元素 C 中的算法库中的函数但无济于事 我还尝试取消引用迭代器 但收到一系列错误 这是我的代码 if c
  • SwiftUI 矩形中的对角线 LinearGradient

    问题 我正在尝试在 SwiftUI 中渲染矩形形状的对角线性渐变 我实现了一个标准的多站线性渐变 当渲染为正方形时它工作得很好 但是当我将框架更改为矩形时 它有一些奇怪的行为 并且看起来更水平 或者有一些奇怪的剪裁 Code struct
  • C# - GC.GetTotalMemory() 问题

    我正在创建一个基于 C 的 Windows 服务 该服务将连续几个月 24x7 运行 我希望能够跟踪我的服务的一般内存使用情况 它不需要精确到字节 分配的一般金额就足够了 我将监视内存消耗的趋势 GC GetTotalMemory 是监视此
  • java.net.SocketException:软件导致连接中止:套接字写入错误[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序来发送带有附件的邮件 当我附加一个小的 zip 文件时 它工作正常 但是当我附加一个较大的 gt 1mb zip 文件时 它返回错误 java net SocketException 软件导
  • 使用默认值注释模型上的属性

    我创建了一个 EF4 1 代码优先模型 可能重要也可能不重要 并且我正在尝试获取 创建脚手架 模板的默认值 我的模型看起来像 class Person DefaultValue 18 public int Age get set 然后我的创
  • 自动递增跳过数字?

    注意 我是数据库和 PHP 新手 我有一个order设置为的列auto increment and unique 在我的 PHP 脚本中 我使用 AJAX 来获取新数据 但问题是 order跳过数字并且明显更高 因此迫使我在插入数据时手动更