Duplicate entry 679 for key 1商城错误

发布:2011-08-30 08:44   点击583次   评论:0

 

 *** 商城错误:

MySQL server error report:
Array (
[0] => Array ( [message] => MySQL Query Error )
[1] => Array ( [sql] => SELECT b.brand_id, b.brand_name, b.brand_logo, b.brand_desc, COUNT(*) AS goods_num, IF(b.brand_logo > '''', ''1'', ''0'') AS tag FROM `shop`.`ecs_brand`AS b, `shop`.`ecs_goods` AS g WHERE g.brand_id = b.brand_id AND is_show = 1 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 GROUP BY b.brand_id HAVING goods_num > 0 ORDER BY tag DESC, b.sort_order ASC LIMIT 8 )
[2] => Array ( [error] => Duplicate entry ''679'' for key 1 )
[3] => Array ( [errno] => 1062 ) )


 *** 资料:

http://www.discuz.net/forum.php?mod=viewthread&tid=1204872#lastpost
警惕升级后贴子tid以千万计Duplicate entry ''16777215'' for key 1 [复制链接] 


警惕,如果你升级后,贴子TID号以千万计请进入!


我原本指望求高手指点帮忙了,但是这些都是没用的,发布求助信息也没有人帮助,最后还是自己一点点查找资料,一点点修改数据,最后OK了!

赞美下网络,网络真是太伟大了,什么资料都能查到,当然,有用的,没用的,需要自己去甄别。

说说经过:
我的坛子:www.sh000.com

事情的起因:

2008年1月23升级,先后进行了两次后,貌似成功了,但当时没注意,主题贴tid号由312051一下子跳到了16775201,在28号查看sitemap时,突然注意到这个问题,但百思不得其解,为什么会这样子,后来想想,就是因为升级。

发现问题:
1。28以后,每天查看坛子,发现发贴量不少,就是没有主题贴,这种状况一直延续到2.2,大量的版主向我反映不能发主题。只要发主题,就只在左上角显示个黄色的小叉。我重做了服务器系统,重授了权限,也不能发主题。

经过文件权限检查和文件校验,全部正常

2。3日,在后台取消了浮动窗口,问题才露出了真面目:(大家注意红色部分,那是关键)

Discuz! info: MySQL Query Error
User: admin
Time: 2009-2-3 4:43pm
Script: /post.php
SQL: INSERT INTO [Table]threads (fid, readperm, price, iconid, typeid, sortid, author, authorid, subject, dateline, lastpost, lastposter, displayorder, digest, special, attachment, subscribed, moderated)
VALUES (''241'', ''0'', ''0'', ''0'', ''0'', '''', ''admin'', ''7'', ''测试测试'', ''1233650594'', ''1233650594'', ''admin'', ''0'', ''0'', ''0'', ''0'', ''0'', ''0'')
Error: Duplicate entry ''16777215'' for key 1
Errno.: 1062
Similar error report has been dispatched to administrator before.

http://faq.comsenz.com 搜索此错误的解决方案
说要改自增号,可是怎么改也还是17777215,只要发主题,就是向已经有了这个TID号的数据库注入一个相同的TID是不允许的,所以,这个主题贴发不出去了!

为什么总是17777215,而不能增加了呢,我查到了tid字段的类型是MEDIUMINT,最大数就是17777215

 

 *** 资料2:

之后打开了MYSQL手册找到了TINYINT和SMALLINT和INT类型的说明:

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]
一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]
这是INT的一个同义词。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]
一个大整数。有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到
18446744073709551615。




 *** 解决过程:

1。我先将threads中TID 结构改了,改成了INT类型,这样可以发新贴了,但后台数据校验时出现了问题,提示类型更改,会影响坛子的安全,也影响将来的升级

2。于是乎,再查资料,决定改tid号,改了以后,就OK了!

update cdb_threads set tid=tid-16463149 where tid>16775200;
update cdb_posts set tid=tid-16463149 where tid>16775200;
update cdb_attachments set tid=tid-16463149 where tid>16775200;
update cdb_myposts set tid=tid-16463149 where tid>16775200;
update cdb_activities set tid=tid-16463149 where tid>16775200;
update cdb_activityapplies set tid=tid-16463149 where tid>16775200;
update cdb_favorites set tid=tid-16463149 where tid>16775200;
update cdb_mythreads set tid=tid-16463149 where tid>16775200;
update cdb_paymentlog set tid=tid-16463149 where tid>16775200;
update cdb_polloptions set tid=tid-16463149 where tid>16775200;
update cdb_polls set tid=tid-16463149 where tid>16775200;
update cdb_relatedthreads set tid=tid-16463149 where tid>16775200;
update cdb_rewardlog set tid=tid-16463149 where tid>16775200;
update cdb_rsscaches set tid=tid-16463149 where tid>16775200;
update cdb_sessions set tid=tid-16463149 where tid>16775200;
update cdb_subscriptions set tid=tid-16463149 where tid>16775200;
update cdb_threadsmod set tid=tid-16463149 where tid>16775200;
update cdb_tradelog set tid=tid-16463149 where tid>16775200;
update cdb_trades set tid=tid-16463149 where tid>16775200;
update cdb_threadtags set tid=tid-16463149 where tid>16775200;

我的数据库超级大,cdb_post达到了2。0G,这个文件每次修复,都大半天,经常还不成功,真难过,我觉得官方应该想想这些超级大的数据库的问题,要是能分割就好了,不知管理人员能不能看到这段话

3。不过可惜的是,我改的过程中,没有一个详细的含有TID字段的数据库文件名单,导致升级后的所有主题贴丢失,打开后什么也不显示,也就是某个数据丢失了,于是,这部分贴子全部删除。

全部工作用了两个大半夜外+一整天,做好了后,坛子速度快了很多, 颇有成就感,写个贴子,让有同样问题的朋友有所借鉴。
 

关于 GitHub 导航 部门 反馈

提示:`/home.php`入口数据仅为演示功能,不构成任何交易凭证,也不承担相关风险和责任!

Copyright © 2011-2018 xxxxx.com All rights reserved.

Run:22.765/52.243(ms); 7(sql)/2.897(MB); comm:news/detail; Upd:2025-01-11 11:14:00