升级61后,几个应用之间注册用户激活时候出现的问题,我搜了一下,很多人都有提到过,一直没有解决办法,我试验了大半夜,终于找到一点线索,希望有助于管理员解决这个很多人反映的问题。
php4, mysql4.1,dz6.0升级6.1顺利完成。
问题现象:
升级后,几个应用之间激活用户出现的错误,具体表现在:
当主应用1和次应用2均有相同名字的某注册用户test时候,在激活的时候,出现类似下面的sql错误:
Discuz! info: MySQL Query Error
Time: 2008-4-24 6:02pm
Script: /discuz/register.php
SQL: INSERT INTO [Table]members (uid, username, password, secques,gender, adminid, groupid, regip, regdate, lastvisit, lastactivity,posts, credits, extcredits1, extcredits2, extcredits3, extcredits4,extcredits5, extcredits6, extcredits7, extcredits8, email, bday,sigstatus, tpp, ppp, styleid, dateformat, timeformat, pmsound,showemail, newsletter, invisible, timeoffset)
VALUES ('3590', 'QBer01', '424cf5f483804953793359c1a61914d0', '', '0','0', '10', '61.149.143.185', '1209031361', '1209031361', '1209031361','0', 0,0,0,0,0,0,0,0,0, 'QBer01@gmail.com', '0000-00-00', '0', '0','0', '', '0', '0', '1', '1', '1', '0', '9999')
Error: Duplicate entry '3590' for key 1
Errno.: 1062
Similar error report has beed dispatched to administrator before.
问题具体测试:
1)先在主应用1上,登录该重复用户“test”,由于是主应用,登录正常;然后同步登录到应用2,提示要求激活,此时点击激活,出现上述错误。
2)如果换一下,先在次应用2上登录用户“test”,由于是次应用,登陆后即提示,用户名重复,要求更改名字,此时按要求更改名字后,操作正常,成功更改名字为newtest。此时,已经不存在重复名字,因此,到主应用1中也成功登陆并激活。
此时,原来主应用1中的“test”由于也不存在重复名字,因此也可以在2个应用中顺利登录和激活。
因此,问题只在下面情况下发生:
当2个应用存在重复ID,当该ID先在主应用中登录,并同步登陆到次应用时,将无法激活!!!!出现上述错误。
为避免错误,必须现在次应用中登录该ID,并改名后,才可以。 |