那么删除你现在的数据库,重新附加一下数据库文件就没有问题了
方法很简单,
.mdf文件是数据库中的一个主要数据文件,它是数据库的起点,指向数据库中文件的其它部分,
.ldf是数据库中的一个日志文件。当电脑出现故障无法备份数据库时,可以通过附加数据的方法
利用.mdf数据文件附加到当前服务器, 还原原有的数据。打开企业管理器,右击【数据库】->
【所有任务】->【附加数据库】,
可以从后面的网址登录去看一下,很简单
你的aaa数据库已经被损坏了,原因未知(不一定是它提示的空间不足什么的)。如果仅仅是你测试或学习用的库,重新建一个就好了。如果里面有重要数据,找找以前有没有备份吧,没有的话,参照下面的资料弄弄,这些资料是在网上帮你查的。
----------------------------------------
错误 945
严重级别 16
消息正文
由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库 ''%1!''。详细信息请参见 SQL Server 错误日志。
解释
当数据库标记为 IsShutdown 时返回错误 945。当由于丢失文件或某些其它资源错误(这些错误的更正通常比较容易)而无法恢复数据库时,发生该错误。
对策
首先,使用 DATABASEPROPERTY 验证数据库是否标记为 IsShutdown。
然后,通过查阅错误日志确定错误的起因,并采取下列对策。
如果一个或多个数据或日志文件丢失:
使这些文件可用,并使用 ALTER DATABASE 使数据库 OFFLINE(脱机)。
使用 ALTER DATABASE 以使数据库 ONLINE(联机)
如果日志空间不足:
使用 sp_add_log_file_recover_suspect_db() 添加其它的日志文件。
该过程恢复数据库并使其联机。
如果数据空间不足:
使用 sp_add_data_file_recover_suspect_db() 添加其它的日志文件。
该过程恢复数据库并使其联机。
如果内存不足:
当同时恢复许多数据库时可能发生内存不足错误。重试该 *** 作可能修复问题:
重试 *** 作,使用 ALTER DATABASE 以使数据库 OFFLINE。
使用 ALTER DATABASE 以使数据库 ONLINE。
如果重试 *** 作不起作用,则考虑释放内存。
---------------------------------------------------
如果确实有重要数据而上面的方法又没有作用的话。。。楼主往宽里想吧,人生一万来天,谁还不会遇到点儿倒霉事儿啊。。。
因为磁盘空间不足,我的一个虚拟机服务器崩溃了。结果数据库服务器进程无法启动,数据也就无法导出。只能想办法从数据库原始文件 ibdata 和 frm 文件中恢复数据库。因为没有经验,好不容易才找到了恢复方法。特此记录,以备后用。
磁盘空间不足之后,mysqld 进程无法启动,提示“Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)”。这真是让人无比头大,数据库根本连接不上。
目录 Contents
1. 保存原始数据库文件
2. 恢复方法
3. 参考资料:
1. 保存原始数据库文件¶
好在数据库原始文件还在。在我的系统环境和配置情况下,这些文件位于 /var/lib/mysql/ 文件夹下面。假设数据库名是 test,则这些文件表现为:
--mysql
|--test
|--1.frm
|--2.frm
|...
|--mysql
|...
|--ib_logfile0
|--ib_logfile1
|--ibdata1
|...
这些就是原始数据库文件,可以用来恢复数据库。将这些文件额外保存一份,以防万一。
2. 恢复方法¶
我的原始虚拟机完全没有磁盘空间而无法启动数据库服务器进程。虽然试着删除一些不需要的文件,但是数据库却始终无法连接。于是我新建了一个几乎一样的虚拟机(当然磁盘加大了),试图将这些数据库文件导入并恢复数据库。
在经历了很多错误之后,终于找到了正确的方法:
安装完成新服务器之后,通过命令行新建了与原来一样的数据库:数据库名称、用户名、密码都一样。如果有多个数据库需要恢复,就都给建好。(跟配置新服务器一样,参见安装和配置 MYSQL 数据库服务器。)
停止 mysqld 进程
service mysqld stop
将备份的原始数据库文件中的所有 .frm 文件(保持原来的目录结构)和 ibdata1 文件复制到新服务器的数据库文件目录中(如果新服务器 *** 作系统和配置环境一样,那么目录结构也一样),其它文件不要。
使用 -innodb_force_recovery=6参数启动数据库服务器进程,这里是
/etc/init.d/mysqld start -defaults-file=/etc/my.cnf -standalone -console -innodb_force_recovery=6
OK,数据库恢复完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)