帝國cms報錯Duplicate entry 'xxx' for key 'tagname'
優(yōu)采云 發(fā)布時(shí)間: 2022-10-10 18:02我們在客服過(guò)程中,收到不少關(guān)于帝國cms發(fā)布失敗的反饋,報錯信息為:
Duplicate entry 'xxx' for key 'tagname'
insert into ***_enewstags(tagname,num,isgood,cid) values('xxx',1,0,0);
這個(gè)問(wèn)題是在保存tags標簽的環(huán)節出現的,它造成的影響:1. 文章發(fā)布在此處中斷,文章主體內容保存完成,但tags標簽沒(méi)有保存完,后面還有靜態(tài)HTML生成和百度推送都沒(méi)有執行,嚴重影響網(wǎng)站更新。
2. 由于被中斷,優(yōu)采云這邊無(wú)法收到正常的發(fā)布完成信號,導致優(yōu)采云誤認為文章保存失敗,會(huì )發(fā)出很多站內通知,暫存庫也會(huì )堆積大量暫存文章,造成管理麻煩。
?
鑒于上述問(wèn)題頻發(fā),我們調試檢查了帝國cms,最終發(fā)現根本原因是:帝國cms數據庫enewstags表tagname這個(gè)字段默認的最大允許長(cháng)度僅有20個(gè)字節,在GBK編碼下就是10個(gè)漢字,在UTF-8編碼下則只能存入6個(gè)漢字,這實(shí)在是太短了。
?
發(fā)現這個(gè)問(wèn)題后,我們考慮了在接口文件中強制截斷tags標簽到20字節,但這會(huì )導致很多用戶(hù)的tag標簽不完整,所以放棄了。
?
如果您是用的帝國cms,強烈建議把此長(cháng)度加長(cháng),比如改到100,就能極大程度減少這個(gè)問(wèn)題的發(fā)生。操作方法如下:
1. 在PHPmyadmin中找到數據表**_enewstags,點(diǎn)擊后面的的“結構”按鈕。
2. 在結構頁(yè)面可以看到tagname字段的格式為char(20),即表示20個(gè)字節,我們需要修改的就是它。點(diǎn)擊后面的“修改”按鈕:
3. 在修改界面,把長(cháng)度/值對應的框(下圖第三個(gè)框)中的20改為100,然后點(diǎn)擊右下角保存按鈕就可以了。