求教:.db数据库文件损坏,可以修复吗

求教:.db数据库文件损坏,可以修复吗,第1张

第一感觉是你能瞎折腾。

因为你的数据很重要,系统崩溃后,第一应该想到的应该是如何把你的重要数据抢救出来,然后再装系统,最后把你的数据导回去。

可你倒好,直接格式化,这是第一个错误,如果说这个错误还不是很严重,那接下来马你犯的第二个错误也能是要命的——重装系统。重装系统最直接的结果,就是可能导致你原有数据被新写进去的数据所覆盖。可能你还寄希望于网上一些免费的数据恢复软件,但结果却是令你大失所望。

且不说网上形形色色的各种软件算法上的缺陷,这些缺陷导致它们可能对原本存在于磁盘上的资料无法正确还原出来。要命的是,即使你下载的软件算法上完美的,如果你新装的系统把你的数据库文件覆盖了,那这些并不存在的完美软件也是不能让你的原有资料还原的。要知道,覆盖数据是不可恢复的。

给你一点建议:如果数据真正重要,别再自己折腾,马上找当地真正专业的数据恢复公司,让他们先从底层检测数据的覆盖情况,再为你想恢复的办法。注意,别找那些电脑城挂一块招牌便号称“数据恢复”的小摊。他们的能耐,比你强不了多少,他们乐于做的,也就是用网上下载的软件扫描一下,然后就想法点你身上的票子。

祝你好运!

一、Can’t connect to MySQL server on ‘localhost’ (10061)

翻译:不能连接到 localhost 上的mysql

分析:这说明“localhost”计算机是存在的,但在这台机器上却没提供MySQL服务。

需要启动这台机器上的MySQL服务,如果机子负载太高没空相应请求也会产生这个错误。

解决:既然没有启动那就去启动这台机子的mysql。如果启动不成功,多数是因为你的myini配置的有问题。重新配置其即可。

如果觉得mysql负载异常,可以到mysql/bin 的目录下执行mysqladmin -uroot -p123 processlist来查看mysql当前的进程。

二、Unknown MySQL Server Host ‘localhosadst’ (11001)

翻译:未知的MySQL服务器 localhosadst

分析:服务器 localhosasdst 不存在。或者根本无法连接

解决:仔细检查自己论坛下面的 /configincphp 找到$dbhost重新设置为正确的mysql 服务器地址。

三、Access denied for user: ‘roota@localhost’ (Using password: YES)

翻译:用户 roota 访问 localhost 被拒绝(没有允许通过)

分析:造成这个错误一般数据库用户名和密码相对mysql服务器不正确

解决:仔细检查自己论坛下面的 /configincphp 找到$dbuser、$dbpw核实后重新设置保存即可。

四、Access denied for user: ‘red@localhost’ to database ‘newbbs’

翻译:用户 red 在localhost 服务器上没有权限 *** 作数据库newbbs

分析:这个提示和问题三是不同的。那个是在连接数据库的时候就被阻止了,而这个错误是在对数据库进行 *** 作时引起的。比如在select update等等。这个是因为该用户没有 *** 作数据库相应的权力。比如select 这个 *** 作在mysqluserSelect_priv里记录 Y 可以 *** 作N 不可以 *** 作。

解决:如果是自己的独立主机那么更新mysqluser 的相应用户记录,比如这里要更新的用户为red 。或者直接修改 /configincphp 为其配置一个具有对数据库 *** 作权限的用户

或者通过如下的命令来更新授权grant all privileges on dbname to ‘user’@’localhost’ identified by ‘password’

提示:更新了mysql库中的记录一定要重启mysql服务器才能使更新生效

FLUSH PRIVILEGES;

五、No Database Selected

翻译:没有数据库被选择上

分析:产生的原因有两种

configincphp 里面$dbname设置的不对。致使数据库根本不存在,所以在 $db->select_db($dbname); 时返回了false

和上面问题四是一样的,数据库用户没有select权限,同样会导致这样的错误。当你发现configincphp的设置没有任何问题,但还是提示这个错误,那一定就是这种情况了。

解决:对症下药

打开configincphp 找到$dbname核实重新配置并保存

同问题四的解决方法

六、Can’t open file: ‘xxx_forumsMYI’ (errno: 145)

翻译:不能打开xxx_forumsMYI

问题分析:

这种情况是不能打开 cdb_forumsMYI 造成的,引起这种情况可能的原因有:

1、服务器非正常关机,数据库所在空间已满,或一些其它未知的原因,对数据库表造成了损坏。

2、类 unix *** 作系统下直接将数据库文件拷贝移动会因为文件的属组问题而产生这个错误。

解决方法:

1、修复数据表

可以使用下面的两种方式修复数据表:(第一种方法仅适合独立主机用户)

1)使用 myisamchk ,MySQL 自带了专门用户数据表检查和修复的工具 —— myisamchk 。更改当前目录到 MySQL/bin 下面,一般情况下只有在这个下面才能运行 myisamchk 命令。常用的修复命令为:myisamchk -r 数据文件目录/数据表名MYI;

2)通过 phpMyAdmin 修复, phpMyAdmin 带有修复数据表的功能,进入到某一个表中后,点击“ *** 作”,在下方的“表维护”中点击“修复表”即可。

注意:以上两种修复方式在执行前一定要备份数据库。

发出

COMMIT

ROLLBACK语句之前,尝试连接另一个数据库或同一个数据库。

CONNECT

1类环境内不能处理该请求。

退出执行reset

重新执行就可以了,

[db2inst1@localhost

~]$

db2

connect

reset

[db2inst1@localhost

db2dump]$

db2

connect

to

newhis

Database

Connection

Information

Database

server

=

DB2/LINUX

975

SQL

authorization

ID

=

DB2INST1

Local

database

alias

=

NEWHIS

一切正常了。

如何恢复被delete/update的数据

*** 作步骤  

1 连接到被删除数据库的Db

打开log explorer  选择  "file"->"attach log file"->选择服务器和登陆方式->"connect"->选择"数据库"->"attach"

2   查看日志

在左面 *** 作项目的对话框中选择"browse"项目->"view log"->就可以看到当前的Log记录了

3   恢复数据

右键某一条log记录,选择"undo transation"->"选择保存文件名和路径"->然后打开该文件到查询分析器里执行

T-sql代码就可以了

例如: 如果log是delete table where 的话,生成的文件代码就是insert table 

因为磁盘空间不足,我的一个虚拟机服务器崩溃了。结果数据库服务器进程无法启动,数据也就无法导出。只能想办法从数据库原始文件 ibdata 和 frm 文件中恢复数据库。

因为没有经验,好不容易才找到了恢复方法。特此记录,以备后用。

磁盘空间不足之后,mysqld 进程无法启动,提示“Can't connect to local MySQL server through socket '/var/lib/mysql/mysqlsock' (2)”。这真是让人无比头大,数据库根本连接不上。

目录 Contents

1 保存原始数据库文件

2 恢复方法

3

参考资料:

1 保存原始数据库文件¶

好在数据库原始文件还在。在我的系统环境和配置情况下,这些文件位于 /var/lib/mysql/ 文件夹下面。假设数据库名是 test,则这些文件表现为:

--mysql

|--test

|--1frm

|--2frm

|

|--mysql

|

|--ib_logfile0

|--ib_logfile1

|--ibdata1

|

这些就是原始数据库文件,可以用来恢复数据库。将这些文件额外保存一份,以防万一。

2 恢复方法¶

我的原始虚拟机完全没有磁盘空间而无法启动数据库服务器进程。虽然试着删除一些不需要的文件,但是数据库却始终无法连接。于是我新建了一个几乎一样的虚拟机(当然磁盘加大了),试图将这些数据库文件导入并恢复数据库。

在经历了很多错误之后,终于找到了正确的方法:

安装完成新服务器之后,通过命令行新建了与原来一样的数据库:数据库名称、用户名、密码都一样。如果有多个数据库需要恢复,就都给建好。(跟配置新服务器一样,参见安装和配置 MYSQL 数据库服务器。)

停止 mysqld 进程

service mysqld stop

将备份的原始数据库文件中的所有 frm 文件(保持原来的目录结构)和 ibdata1 文件复制到新服务器的数据库文件目录中(如果新服务器 *** 作系统和配置环境一样,那么目录结构也一样),其它文件不要。

使用 -innodb_force_recovery=6参数启动数据库服务器进程,这里是

/etc/initd/mysqld start -defaults-file=/etc/mycnf -standalone -console -innodb_force_recovery=6

OK,数据库恢复完成。

C#压缩Access数据库 1、 /// <summary> /// connectionString 数据库连接字符串 /// mdwfilename 数据库绝对路径+数据库名 /// </summary> /// <param name="connectionString"></param> /// <param name="mdwfilename"></param> static void CompactAccessDB(string connectionString, string mdwfilename) { object[] oParams; object objJRO = ActivatorCreateInstance(TypeGetTypeFromProgID("JROJetEngine")); oParams = new object[] {connectionString, "Provider=MicrosoftJetOLEDB40;Data;Source=C:\\tempmdb;Jet OLEDB:Engine Type=5"}; objJROGetType()InvokeMember("CompactDatabase",SystemReflectionBindingFlagsInvokeMethod, null,objJRO,oParams); SystemIOFileDelete(mdwfilename); SystemIOFileMove("C:\\tempmdb", mdwfilename); SystemRuntimeInteropServicesMarshalReleaseComObject(objJRO); objJRO = null; } 2/// JetEngine x = new JetEngine(); xCompactDatabase(connectstring, "Provider=MicrosoftJetOLEDB40;Data Source=C:\\tempmdb;Jet OLEDB:Engine Type=5;User ID=Admin;Password=;");//第二个参数是用来存放压缩后数据库的 SystemIOFileDelete(mdbfilename); SystemIOFileMove("C:\\tempmdb", mdbfilename); /// 两种方法,第一种比较难理解,第二种添加dll,简单易用。我在程序中用的第一 种方法,避免了添加dll但是需要从数据库连接字符串里解析出mdwfilename。此 外,在调用上述方法前都得先关闭数据库连接,因为毕竟都得delete旧数据库的 。 另外,你可以参考 >

数据库损坏,修复的书本名称有《SQLServer2012数据库恢复实战》,《MySQL数据库故障排除与恢复》,《Oracle数据库故障排除与恢复》。

1、《SQLServer2012数据库恢复实战》:该书从实践出发,介绍了SQLServer2012数据库损坏的原因、分类、诊断和修复方法,详细讲解了如何使用备份和日志来恢复数据库,以及如何使用工具来修复损坏的数据库。

2、《MySQL数据库故障排除与恢复》:该书详细介绍了MySQL数据库的故障排除和恢复,包括如何诊断和修复各种常见的数据库问题,如数据丢失、损坏和不一致等。

3、《Oracle数据库故障排除与恢复》:该书从Oracle数据库的体系结构出发,介绍了如何诊断和修复各种常见的Oracle数据库问题,包括数据块损坏、表空间故障等。

以上就是关于求教:.db数据库文件损坏,可以修复吗全部的内容,包括:求教:.db数据库文件损坏,可以修复吗、Mysql常见的几个错误问题及解决方法、网站出现do not connect database这样无法连接数据库该怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9830382.html

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

发表评论

登录后才能评论

评论列表(0条)

保存