·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

后台运行记录里面老是出现1062错误,请教一下如何解决

314 2
发表于 2023-1-30 20:13:28 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(1062) Duplicate entry '18133911-436052' for key 'PRIMARY'INSERT INTO forum_hotreply_member SET `tid`='8273477' , `pid`='18133911' , `uid`='436052' , `attitude`='1'

PHP:
forum.php#require(%s):0067
source/module/forum/forum_misc.php#discuz_table->discuz_table->insert():1809
source/class/discuz/discuz_table.php#discuz_database::discuz_database::insert():0081
source/class/discuz/discuz_database.php#discuz_database::discuz_database::query():0060
source/class/discuz/discuz_database.php#db_driver_mysqli->db_driver_mysqli->query():0142
source/class/db/db_driver_mysqli.php#db_driver_mysqli->db_driver_mysqli->halt():0148
source/class/db/db_driver_mysqli.php#break():0223
User: uid=43605; IP=112.95.210.17; RIP:183.134.17.20 Request: /forum.php?mod=misc&action=postreview&do=support&tid=827477&pid=1813911&hash=97b8cb2d&ajaxmenu=1&inajax=1&ajaxtarget=ajaxid_0.2399481829085348_menu_content



曾经把forum_hotreply_member这个表中的tid改成了int10,但还是会报错,请教一下了,版本为discuz x3.4,mysql是5.7.37,php是7.4


万分感谢。



我要说一句 收起回复

评论2

苍岚Lv.2 发表于 2023-2-18 20:33:10 | 查看全部 | QQBrowser| Windows 10
请问你解决了吗?我也出现了
我是在处理后台举报的时候出现的
后台运行记录里面老是出现1062错误,请教一下如何解决 后台,运行,运行记录,记录,里面 后台运行记录里面老是出现1062错误,请教一下如何解决 后台,运行,运行记录,记录,里面
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-16 23:01:12 | 查看全部
从你提供的错误信息来看,`1062` 错误是 MySQL 中的 `Duplicate entry` 错误,表示你正在尝试插入一条已经存在的主键或唯一键记录。具体来说,错误信息中的 `Duplicate entry '18133911-436052' for key 'PRIMARY'` 表示在 `forum_hotreply_member` 表中,`PRIMARY` 键(主键)已经存在 `tid` 为 `18133911` 和 `uid` 为 `436052` 的记录。

### 问题分析:
1. **主键冲突**:`forum_hotreply_member` 表的主键可能是由 `tid` 和 `uid` 组成的复合主键。当你尝试插入一条记录时,如果 `tid` 和 `uid` 的组合已经存在,就会触发 `1062` 错误。
2. **重复插入**:可能是由于用户在短时间内多次点击了“支持”按钮,导致多次尝试插入相同的记录。

### 解决方案:
1. **检查插入逻辑**:
   - 在插入数据之前,先检查 `forum_hotreply_member` 表中是否已经存在相同的 `tid` 和 `uid` 组合。如果存在,则不再插入。
   - 你可以在 `source/module/forum/forum_misc.php` 文件中找到相关的插入逻辑,并在插入之前添加一个检查。

   例如:
  
  1. $exists = C::t('forum_hotreply_member')->fetch_by_tid_uid($tid, $uid);
  2.    if (!$exists) {
  3.        C::t('forum_hotreply_member')->insert(array(
  4.            'tid' => $tid,
  5.            'pid' => $pid,
  6.            'uid' => $uid,
  7.            'attitude' => $attitude
  8.        ));
  9.    }
复制代码


2. **使用 `INSERT IGNORE`**:
   - 如果你希望忽略重复插入的错误,可以使用 `INSERT IGNORE` 语句。这样,如果插入的记录已经存在,MySQL 会忽略该错误,而不会抛出 `1062` 错误。

   例如:
  
  1. DB::query("INSERT IGNORE INTO ".DB::table('forum_hotreply_member')." SET `tid`='$tid', `pid`='$pid', `uid`='$uid', `attitude`='$attitude'");
复制代码


3. **使用 `ON DUPLICATE KEY UPDATE`**:
   - 如果你希望在插入时遇到重复键时更新现有记录,可以使用 `ON DUPLICATE KEY UPDATE` 语句。

   例如:
  
  1. DB::query("INSERT INTO ".DB::table('forum_hotreply_member')." SET `tid`='$tid', `pid`='$pid', `uid`='$uid', `attitude`='$attitude' ON DUPLICATE KEY UPDATE `attitude`='$attitude'");
复制代码


4. **前端限制**:
   - 在前端页面中,可以通过 JavaScript 禁用“支持”按钮,防止用户多次点击。

### 总结:
你可以通过检查插入逻辑、使用 `INSERT IGNORE` 或 `ON DUPLICATE KEY UPDATE` 语句来解决 `1062` 错误。同时,前端也可以做一些限制,防止用户多次提交相同的数据。

如果你需要进一步的帮助,欢迎随时联系我,或者访问 DZ插件网(https://www.dz-x.net/)获取更多技术支持。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.21.158.34,GMT+8, 2025-4-18 14:53 , Processed in 0.294091 second(s), 83 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表