帝国cms手动分表教程及报错解决办法
弄了个帝国百科站,数据到了将近200万,运行,和火车头发布现在都有些卡,于是按照网上的教程操作,一直出现错误提示
百度后找到的sql命令也没有解决这个问题,直接在数据库中看,发现表phome_ecms_news和表phome_ecms_news_data_1的数据条数不一样,备份数据库后在网上各种找,终于找到一条命令执行后2个表的数据一样多了
主要是因为索引表里面有记录而内容表没有
select id from phome_ecms_news where id not in (select id from phome_ecms_news_data_1)//这条是查询命令
delete from phome_ecms_news where id not in (select id from phome_ecms_news_data_1) //这条是直接删除命令
以上第二条直接删除的命令,要是有分表的千万不要执行!!千万不要执行!!千万不要执行!!重要的事情说三遍,刚刚已经恢复过一次数据库了
在然后按照网上的分表教程就能顺利执行了
帝国CMS分表建立
首先进入到帝国的后台,点击系统-数据表与系统模型-管理数据表,接下来就可以看到熟悉的画面了
在这里,找到自己需要修改或迁移的数据库,然后点击后边的管理分表即可
打开分表后,点击增加,这里虽然说可以自己设置分表名称,但为了后边的操作方便,建议大家还是使用默认的数字分表就可以,不要随便的去更改。
接着就可以来到sql后台进行操作了,这里需要用到sql命令行,如果你不是很懂得话,也可以使用PhpMyadmin进行操作,这里为了大家能够看得明白 ,海豚也一起使用pma进行操作。
帝国CMS分表数据转移
进入phpmyadmin后,点击需要操作的数据库,然后不要在右边点数据库,直接点SQL进入到命令操作行,在pma面板上大写的哦
在这里大家就可以输入自己心仪的命令了
INSERT INTO phome_ecms_news_data_2
SELECT * FROM phome_ecms_news_data_1 T2
WHERE T2.ID>= 100001 AND T2.ID<= 200000;
update phome_ecms_news set stb=REPLACE(stb,1,2)
WHERE ID>= 100001 AND ID<= 200000;
解释下这段代码的意思:
第一句:在phome_ecms_28数据表第2分表插入行
第二句:将phome_ecms_28数据表第1分表数据复制到数据表第2分表
第三句:限制即将复制的数据信息ID范围为100001到200000
第四句:更改数据表phome_ecms_28中分表ID以便查询
第五句:限定即将修改的phome_ecms_28分表ID范围为100001到200000
好了,每句话都解释的相当清楚了,如果还有什么不明白的,可以在下方留言。
这些命令执行完成之后,值得注意的是,在phome_ecms_28_data_1分表中原有范围的数据已经没用了,需要将它清除掉以节省数据空间,删除命令如下:
DELETE FROM phome_ecms_28_data_1 WHERE ID>= 100001 AND ID<= 200000;
这句话的意思是删除原信息范围为100001到20000的信息,完成之后,所以的工作就大功告成了
发表评论