Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已解决] 7.2转X1.5到( 43 / 79 ) polls.php时出错,Duplicate entry 'xxx'for key 1

[复制链接]
灰儿 发表于 2010-9-5 23:06:15 | 显示全部楼层 |阅读模式
本帖最后由 灰儿 于 2010-9-5 23:15 编辑

将Discuz! 7.2 数据转换至 Discuz! X1.5,升级/转换程序正在执行转换程序到( 43 / 79 ) polls.php时出现如下错误提示,请问如何解决?

出错代码:
MySQL Error
Message
: query_error
SQL: INSERT INTO `shfq_x15`.shfq_x15_forum_poll SET `tid`='1056940',`multiple`='0',`visible`='0',`maxchoices`='1',`expiration`='0',`overt`='1',`voters`='7',`pollpreview`='你去死 喝多了? '
Error: Duplicate entry '1056940' for key 1
Errno.: 1062
Click here to seek help.

PHP Backtrace
FileLineClassTypeFunction
include\db.class.php102 db_mysql->halt
source\d7.2_x1.5\table\polls.php51 db_mysql->query
include\do_convert.inc.php54 require
index.php36 require

我把 tid=1014509 的投票贴删除后转换仍然是同样的出错提示,提示代码没有仍然变化。
如果是把 tid=1056940 的投票贴删除后转换出错提示仅仅是把tid=1056940 换成别的数字了。

我对比了一下转换前与转换后的两个数据库对应表的值,发现源数据库数据已经全部转过来了,但为什么转换程序仍有出错提示呢,而且提示的代码也有一定的规律性。提示出错的 tid=1056940  中的值是排在数据库表靠前的那个大于最后一个tid值的tid值,最后一个tid的值是出错网址中的最后一组数字。

转换前后数据库中tid值对比:
排序 7.2的polls表tid值 x1.5的forum_poll表tid值
1 904726 904726
2 906371 906371
3 906670 906670
4 907219 907219
5 909985 909985
6 911941 911941
7 912100 912100
8 912103 912103
9 912171 912171
10 912454 912454
11 912612 912612
12 913822 913822
13 913926 913926
14 914824 914824
15 914826 914826
16 914952 914952
17 917101 917101
18 917102 917102
19 917326 917326
20 918998 918998
21 919474 919474
22 919477 919477
23 919574 919574
24 920458 920458
25 920707 920707
26 921660 921660
27 922423 922423
28 926565 926565
29 922793 922793
30 923984 923984
31 924920 924920
32 925333 925333
33 926697 926697
34 926861 926861
35 927523 927523
36 927793 927793
37 928357 928357
38 929831 929831
39 929981 929981
40 929983 929983
41 930364 930364
42 930782 930782
43 933367 933367
44 934574 934574
45 935057 935057
46 942867 942867
47 943860 943860
48 945642 945642
49 948650 948650
50 948819 948819
51 950263 950263
52 951476 951476
53 951950 951950
54 952386 952386
55 953972 953972
56 953974 953974
57 954763 954763
58 955252 955252
59 956795 956795
60 956831 956831
61 957003 957003
62 957855 957855
63 959748 959748
64 960260 960260
65 961313 961313
66 961660 961660
67 961681 961681
68 961683 961683
69 961684 961684
70 961721 961721
71 962533 962533
72 964338 964338
73 964484 964484
74 964680 964680
75 965974 965974
76 965975 965975
77 968154 968154
78 968714 968714
79 969480 969480
80 971398 971398
81 971626 971626
82 972586 972586
83 974333 974333
84 974340 974340
85 976015 976015
86 977739 977739
87 977874 977874
88 978407 978407
89 978663 978663
90 979103 979103
91 979372 979372
92 979468 979468
93 981197 981197
94 984554 984554
95 987361 987361
96 990908 990908
97 996483 996483
98 997783 997783
99 1000255 1000255
100 1002301 1002301
101 1002953 1002953
102 1003803 1003803
103 1006944 1006944
104 1009490 1009490
105 1010252 1010252
106 1010957 1010957
107 1011071 1011071
108 1013117 1013117
109 1013134 1013134
110 1013254 1013254
111 1013268 1013268
112 1056940 1056940
113 1013437 1013437
114 1056936 1056936
115 1056935 1056935
116 1056934 1056934
117 1056777 1056777
118 1050573 1050573
119 1013447 1013447
120 1050440 1050440
121 1013451 1013451
122 1045182 1045182
123 1042987 1042987
124 1038736 1038736
125 1037806 1037806
126 1036906 1036906
127 1036811 1036811
128 1035746 1035746
129 1035741 1035741
130 1035155 1035155
131 1035004 1035004
132 1013467 1013467
133 1013468 1013468
134 1013469 1013469
135 1033325 1033325
136 1032002 1032002
137 1013504 1013504
138 1031744 1031744
139 1031651 1031651
140 1031267 1031267
141 1031265 1031265
142 1031235 1031235
143 1030878 1030878
144 1030675 1030675
145 1030667 1030667
146 1030168 1030168
147 1030093 1030093
148 1030087 1030087
149 1030086 1030086
150 1030058 1030058
151 1030045 1030045
152 1029950 1029950
153 1013545 1013545
154 1013549 1013549
155 1029803 1029803
156 1029182 1029182
157 1027662 1027662
158 1048642 1048642
159 1026962 1026962
160 1026710 1026710
161 1013735 1013735
162 1013742 1013742
163 1013747 1013747
164 1013749 1013749
165 1013771 1013771
166 1014223 1014223
167 1014439 1014439
168 1014509 1014509






 楼主| 灰儿 发表于 2010-9-5 23:42:47 | 显示全部楼层
本帖最后由 灰儿 于 2010-9-6 22:24 编辑

转换程序source\d7.2_x1.5\table\polls.php的51行代码为:
$db_target->query("INSERT INTO $table_target SET $data");
回复

使用道具 举报

baxter 发表于 2010-9-5 23:46:40 | 显示全部楼层
本帖最后由 baxter 于 2010-9-6 00:21 编辑

数据库有多大,删除这个贴子后再转换呢?
回复

使用道具 举报

 楼主| 灰儿 发表于 2010-9-5 23:54:14 | 显示全部楼层
删除此投票贴后仍然提示出错信息啊
回复

使用道具 举报

baxter 发表于 2010-9-6 00:00:25 | 显示全部楼层
如果需要,可以看签名后,联系我来升级操作
回复

使用道具 举报

 楼主| 灰儿 发表于 2010-9-6 00:18:25 | 显示全部楼层
本帖最后由 灰儿 于 2010-9-6 00:36 编辑

看到很多在7.2转X1.0版时,也有遇到同样的问题,有人采用以下方法解决了,不知在x1.5中是否可行。

把source\d7.2_x1.0\table\polls.php 文件的51行的INSERT INTO改为REPLACE INTO然后刷新升级页面,继续升级试试
相关贴子:

另外官方提供了在7.2转X1.0中出错时的解决方法,能用在X1.5中吗?
4.转换论坛在第四十步【投票帖】时出现mysql语法错误:
     修改convert\source\d7.2_x1.0\table\polls.php文件

找到54行: $poll['pollpreview'] = $polloptionpreview;
将其修改为: $poll['pollpreview'] = daddslashes($polloptionpreview);

相关贴子:
回复

使用道具 举报

 楼主| 灰儿 发表于 2010-9-6 00:40:18 | 显示全部楼层
insert into表示插入数据,数据库会检查主键,如果出现重复会报错;
replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;
回复

使用道具 举报

beijing200808 发表于 2010-9-6 11:41:10 | 显示全部楼层
楼主是不是在升级过程中,刷新页面了呢?
你原来的表中肯定不会出现重复值,现在最简单的办法就是把insert改成replace
回复

使用道具 举报

 楼主| 灰儿 发表于 2010-9-6 21:48:30 | 显示全部楼层
本帖最后由 灰儿 于 2010-9-6 22:27 编辑

本人自己找到了解决的办法:
出错的原因:
7.2的polls数据表中的tid值中有个别数值没有按从小的到大的顺序排列,或者说是tid值中的最后一个数值并非是此列的最大值,转换时就有出错提示。

本人找到的解决办法:
在转换到X1.5在之前,先在7.2论坛中发表一个投票贴,使7.2数据库中的polls表中的最后一个tid值为最大数值,这样在转换时就不有出错提示。

网友提供的另一种解决方法(本人测试有效):
把source\d7.2_x1.5\table\polls.php 文件的51行的INSERT INTO改为REPLACE INTO然后刷新升级页面,继续升级试试。
回复

使用道具 举报

12153556 发表于 2010-9-7 04:17:08 | 显示全部楼层
灰儿 发表于 2010-9-6 21:48
本人自己找到了解决的办法:
出错的原因:
7.2的polls数据表中的tid值中有个别数值没有按从小的到大的顺序 ...

自力更生能学到更多...............
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-10-2 22:30 , Processed in 0.168710 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表