数据库损坏了怎么办

数据库损坏了怎么办,第1张

有的时候因为掉电或者其他原因导致数据库损坏,我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库;例如

检查优化并修复所有的数据库用:

#mysqlcheck-A-o-r-p

Enterpassword:

database1OK

database2OK

----------

修复指定的数据库用

#mysqlcheck-A-o-rDatabase_NAME-p

即可

另外如果只是对某个表进行修复可以用:myisamchk或isamchk

其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:

myisamchktablenameMYI

进行检测,如果需要修复的话,可以使用:

myisamchk-oftablenameMYI

关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。

另外可以把下面的命令放在你的rclocal里面启动MySQL服务器前:

[-x/tmp/mysqlsock]&&/pathtochk/myisamchk-of/DATA_DIR//MYI

其中的/tmp/mysqlsock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysqlsock,对于使用源码安装则是/tmp/mysqlsock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。

1,简单的修复模式

myisamchk-r-qpath/数据库/坏表MYI

注:-r----恢复模式-q----快速修复

2,使用安全修复模式

myisamchk--safe-recoverpath/数据库/坏表MYI

3,困难的修复模式

如果在索引文件的第一个16K块被破坏,或包含不正确的信息,或如果索引文件丢失,你只应该到这个阶段。在这种情况下,创建一个新的索引文件是必要的。按如下这样做:

把数据文件移更安全的地方。

使用表描述文件创建新的(空)数据和索引文件:

shell>mysqldb_name

mysql>DeleteFROMtbl_name;

mysql>quit

将老的数据文件拷贝到新创建的数据文件之中。(不要只是将老文件移回新文件之中;你要保留一个副本以防某些东西出错。)

回到阶段2。现在myisamchk-r-q应该工作了。(这不应该是一个无限循环)。

4,非常困难的修复模式

只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。

从一个备份恢复描述文件并且回到阶段3。你也可以恢复索引文件并且回到阶段2。对后者,你应该用myisamchk-r启动。

如果你没有一个备份但是确切地知道表是怎样被创建的,在另一个数据库中创建表的一个拷贝。删除新的数据文件,然后从其他数据库将描述和索引文件移到破坏的数据库中。这给了你新的描述和索引文件,但是让数据文件独自留下来了。回到阶段2并且尝试重建索引文件。

5,优化表结构

myisamchk-r表

也可以使用sql语句来优化OPTIMIZETABLE

本方法参考自mouse博客

运行mysqlserver脚本,mysqlserver脚本通过调用mysqld_safe启动服务器,该脚本可以通过参数start和stop指定启动还是关闭。mysqlserver脚本在MySQL安装目录下的share/mysql目录中,如果是采用源码安装的MySQL,则可以在support-files目录里找到。如果想使用mysqlserver,则必须把它复制到合适的运行级别目录中。

如上配置之后,就可以利用以下命令启动和关闭MySQL实例。

执行命令:

service

mysqld

start就启动了。

不是数据表问题,应该是你的fat32格式问题,fat32只支持4g以下单个文件,如果你数据库超过了4g,就不行了。也可能是你设置的数据文件限制大小了。

解决办法两个,1,fat32转ntfs

2,真的是数据满了话,设置第二数据文件,数据库的文件不是唯一的。你建立数据文件的时候就可以设置多个。

分析:这是典型的socket没有正确设置的情况。

连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock)。大部分情况下,可以用localhost代表本机127001,但是在MySQL连接时,二者不可混用,而且MySQL中权限设置中localhost与127001也是分开设置的。当设置为127001时,系统通过TCP/IP方式连接数据库;当设置为localhost时,系统通过socket方式连接数据库。

解决:首先要看本机MySQL的socket套接字文件在哪里,查看命令是:

mysqld --verbose --help | grep socket

输出结果显示套接字文件的位置,比如:这台服务器显示的是

socket /var/run/mysqld/mysqldsock

然后修改php的配置文件phpini与之对应起来就好了。

找到这一项:

mysqldefault_socket =

一般来说这一项都是空的,改成:

mysqldefault_socket = /var/run/mysqld/mysqldsock

这里应写上一步查询到的文件,根据你的情况设置。至此php配置就修改好了,如果是CLI(命令行)方式或者CGI方式的话,立即就生效,如果是FASTCGI方式,需要重启一下fastcgi进程。

1、先检查MYSQL服务是否正常启动;

2、MYSQL主机IP最好设为localhost,不允许远程链接;

3、删除可远程链接的用户账号,删除默认的可外部链接的空用户,给所有账号设置密码。

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES),是数据库错误造成的,解决方法如下:

1、首先需要更改root的权限远程的访问的权限,进行进入到自己数据库之后,进入mysql数据库中:use mysql。

2、进行执行update user set host='%' where user='root'  的命令进行执行。

3、执行了相关的命令之后,还是需要进行执行的flush privileges的命令。

4、还需要进行修改的是在etc/sysconfig/selinux进行编辑SELINUX=disabled中。

5、设置完成之后还是需要进行重启Linux,在访问之后,不再显示错误的内容。

wamp5不能正常启动有很多原因,我现在分享下我遇到的,希望对你有帮助!

1检查安装目录是不是英文目录,不能出现中文哦!

2检查80端口,这个就不详细讲了,这个百度多的是。

3最近遇到的一个就是,我之前能启动,不知道为什么突然就mysql 启动不了啦,这个你的看进程mysqld-ntexe看这个是不是在运行,如果在,就结束他,然后重启,如果还不成功,再在进程中关闭它,直达能启动为止,

如果不是这些原因的话,那再 去找找吧,很多原因会导致启动不了的

以上就是关于数据库损坏了怎么办全部的内容,包括:数据库损坏了怎么办、centos7安装好mysql数据库 系统为何打不开了、mysql数据库的数据表瀑了,怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9530907.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存