帝国cms手动分表教程及报错解决办法

  • 2022-03-05
  • 577
  • 0

弄了个帝国百科站,数据到了将近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的信息,完成之后,所以的工作就大功告成了

评论

还没有任何评论,你来说两句吧