最近遇到一个问题,就是网站首页总是无故被删除,想了好久也想不出个原因。刚开始以为是被入侵了,但后来发现是缺少表字段,听我慢慢道来:
最早发现这种情况时,我都会去后台在按一下生成首页,如图:
但是有件事我觉得很奇怪,第二天生成好的index.html,就会消失。经测试,选择“动态浏览”的时候
,程序会自动删除首页,而且这个生成首页默认的是动态浏览。那么问题就来了,别的网站后台默认的都是静态,只有这个网站,无论怎么保存,都是默认选择动态。而由于后台有专门的同事负责更新,她有时直接按生成,没有看动态还是静态造成了首页被删除。
想到了这点,接着我找到了makehtml_homepage.htm文件,想把checked='checked'直接放在静态选项按钮上,结果发现代码是这样的:<?php echo ($row['showmod']==1)? "checked='checked'" : "";?>,这就意味着程序是从数据库中调用判断来得到动态还是静态选项的默认结果。那么为什么会是0而不是1呢?
再说/index.html页面存在于根目录下,如果文件不存在,默认走index.php页面,这个页面中有一个判断:!file_exists('index.html'),当index.html页面不存在时,判断showmod字段,如果为1,则自动生成html
最早发现这种情况时,我都会去后台在按一下生成首页,如图:
但是有件事我觉得很奇怪,第二天生成好的index.html,就会消失。经测试,选择“动态浏览”的时候
,程序会自动删除首页,而且这个生成首页默认的是动态浏览。那么问题就来了,别的网站后台默认的都是静态,只有这个网站,无论怎么保存,都是默认选择动态。而由于后台有专门的同事负责更新,她有时直接按生成,没有看动态还是静态造成了首页被删除。
想到了这点,接着我找到了makehtml_homepage.htm文件,想把checked='checked'直接放在静态选项按钮上,结果发现代码是这样的:<?php echo ($row['showmod']==1)? "checked='checked'" : "";?>,这就意味着程序是从数据库中调用判断来得到动态还是静态选项的默认结果。那么为什么会是0而不是1呢?
再说/index.html页面存在于根目录下,如果文件不存在,默认走index.php页面,这个页面中有一个判断:!file_exists('index.html'),当index.html页面不存在时,判断showmod字段,如果为1,则自动生成html
复制内容到剪贴板 程序代码
<script type="text/javascript">if(window.location.toString().indexOf('pref=padindex') != -1){}else{if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){if(window.location.href.indexOf("?mobile")<0){try{if(/Android|Windows Phone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href="{dede:global.cfg_mobileurl/}/list.php?tid={dede:field.id/}";}else if(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}</script>
这段js是让静态页面识别终端是PC还是移动端,如果是移动端自动跳转,其中的$cfg_mobileurl为移动端位置,默认为/m,修改/include/common.inc.php中的$cfg_mobile_dir = $cfg_cmspath.'/m';即可修改移动端位置。
或者在dedecms后台新增环境变量也可
个人觉得织梦的移动版很不完善,另外推出得太晚了,整整比同行中落后很多
问题状况:DEDECMS网站从5.6版升级到5.7版本,出现修改文章改不了的现象,发布文章时出现,“更新数据库archives表时出错,请检查”
解决办法:登陆系统后台–系统–SQL命令行工具,运行下面代码
Alter TABLE `#@__archives` ADD COLUMN `voteid` int(10) NOT NULL DEFAULT 0 AFTER `mtype`;
运行后更新下缓冲,成功解决了。
其他问题综其原因有如下几点:
1、 由于dedecms v5.7刚推出不久,自身还存在诸多BUG,个人认为目前使用尚不成熟。如果你以前使用dedecms v5.6版本,迁移后使用最新的dedecms v5.7安装后,将dedecms v5.6的数据库进行还原后,网站虽然可以正常访问,但是就会出现如文章标题所说的错误:迁移升级到dedecms v5.7无法发布文章。
解决办法:登陆系统后台–系统–SQL命令行工具,运行下面代码
Alter TABLE `#@__archives` ADD COLUMN `voteid` int(10) NOT NULL DEFAULT 0 AFTER `mtype`;
运行后更新下缓冲,成功解决了。
其他问题综其原因有如下几点:
1、 由于dedecms v5.7刚推出不久,自身还存在诸多BUG,个人认为目前使用尚不成熟。如果你以前使用dedecms v5.6版本,迁移后使用最新的dedecms v5.7安装后,将dedecms v5.6的数据库进行还原后,网站虽然可以正常访问,但是就会出现如文章标题所说的错误:迁移升级到dedecms v5.7无法发布文章。
解决办法,执行一下SQL语句。
步骤:系统 -> 系统设置 -> SQL命令行工具 , 再运行SQL命令行:选择多行命令,然后把下面代码粘贴到下面文本框内。点击确定即可。
步骤:系统 -> 系统设置 -> SQL命令行工具 , 再运行SQL命令行:选择多行命令,然后把下面代码粘贴到下面文本框内。点击确定即可。
复制内容到剪贴板 程序代码
Alter TABLE `dede_admintype` CHANGE `rank` `rank` FLOAT( 6 ) DEFAULT '1';
Update `dede_admintype` set `rank`=(5 + (`rank`/10)) where `rank` > 10;
Alter TABLE `dede_admin` CHANGE `usertype` `usertype` FLOAT( 6 ) UNSIGNED DEFAULT '0';
Update `dede_admin` set `usertype`=(5 + (`usertype`/10)) where `usertype` > 10;
Insert INTO `dede_sysconfig` (`aid`, `varname`, `info`, `groupid`, `type`, `value`) VALUES (746, 'cfg_album_mark', '图集是否使用水印(小图也会受影响)', 3, 'bool', 'N');
Alter TABLE `dede_arctype` ADD `seotitle` VARCHAR( 80 ) NOT NULL DEFAULT '' AFTER `keywords` ;
Update `dede_admintype` set `rank`=(5 + (`rank`/10)) where `rank` > 10;
Alter TABLE `dede_admin` CHANGE `usertype` `usertype` FLOAT( 6 ) UNSIGNED DEFAULT '0';
Update `dede_admin` set `usertype`=(5 + (`usertype`/10)) where `usertype` > 10;
Insert INTO `dede_sysconfig` (`aid`, `varname`, `info`, `groupid`, `type`, `value`) VALUES (746, 'cfg_album_mark', '图集是否使用水印(小图也会受影响)', 3, 'bool', 'N');
Alter TABLE `dede_arctype` ADD `seotitle` VARCHAR( 80 ) NOT NULL DEFAULT '' AFTER `keywords` ;
Select
CONCAT(
'drop table '
, table_name,
';'
)
FROM
information_schema.tables
Where
table_name
LIKE
'dede_%'
;
"dede"为要删除的表前缀,执行此SQL语句后会生成一串SQL语句,必须再执行生成的这些SQL语句才能真正执行删除操作
另外一个就是批量修改表名:
Select CONCAT( 'Alter TABLE ' , table_name, 'RENAME TO ' , table_name, ';' ) FROM information_schema.tables Where table_name LIKE 'dede_%' ; |
首先执行此SQL语句,会生成如下语句:
Alter TABLE de_aaa RENAME TO de_aaa; Alter TABLE de_bbb RENAME TO de_bbb; |
在编辑器中将“RENAME TO de”批量改为想设置的表前缀,再执行此SQL语句即可批量修改表名。