You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入MariaDB数据库后插入数据出现隐藏记录的问题排查

问题原因及解决方法

最可能的原因:事务未提交

你遇到的核心问题是PHP插入的记录处于未提交的事务中,导致仅在PHP自身的数据库连接上下文可见,其他连接(比如HeidiSQL)无法读取。

MariaDB的InnoDB存储引擎默认是事务型的:

  • 若PHP代码中开启了事务(比如调用了BEGIN、mysqli_begin_transaction(),或关闭了自动提交),但插入后未执行commit(),这些记录只会在当前PHP连接的事务内可见。
  • 自增ID的分配是事务无关的,即使事务未提交,自增计数器也会直接递增,所以HeidiSQL手动插入时会从43开始(跳过PHP占用的37-42)。

其他可能的原因

  • 连接的数据库/表不一致:确认PHP和HeidiSQL连接的是同一个数据库实例、同一个库名(注意Linux下MariaDB区分表名大小写)。可以两边都执行select database();和show create table your_table;对比结果。
  • 权限或过滤规则:检查HeidiSQL使用的数据库用户是否有读取所有记录的权限,或是否无意中设置了查询过滤条件(比如默认添加了WHERE id <=36)。

解决步骤

  1. 检查PHP代码的事务逻辑:
    • 若用PDO,确认是否开启了自动提交($pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, true);),或插入后是否调用了$pdo->commit();。
    • 若用mysqli,检查是否调用了mysqli_commit($conn);来提交事务。
  2. 验证记录状态:在HeidiSQL中执行select * from your_table where id between 37 and 42;,若查不到,说明记录未提交,此时在PHP中提交事务后再查询即可看到。
  3. 确认连接一致性:对比PHP和HeidiSQL的数据库连接参数,确保是同一个库和表。

内容的提问来源于stack exchange,提问作者Andino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:55:15