Chinaunix首页 | 论坛 | 博客
  • 博客访问: 366915
  • 博文数量: 55
  • 博客积分: 3195
  • 博客等级: 中校
  • 技术积分: 712
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 18:45
文章分类

全部博文(55)

文章存档

2011年(14)

2010年(41)

分类: Mysql/postgreSQL

2010-08-11 11:52:40

MySQL数据库中常用的两中引擎:
有时候我们对数据库升级或者是迁移的时候,不小心导致数据结构的破坏。
mysql> desc tempinnodb;
ERROR 1146 (42S02): Table 'cmcchr.tempinnodb' doesn't exist
我们从自己以前的数据库拷贝过来的数据竟然提示不存在此表。这种情况其实是可以恢复的,下面来详细看看

Innodb表结构的恢复:
创建一个新的库;
create database cmcchr charset utf8;

use cmcchr;

create table tempinnodb (id int(11) not null) engine=innodb charset utf8;
//这条语句中的engine是必须使用innodb引擎,因为我们恢复的是innodb引擎,设定相应的字符集和以前的表一致。

ok,到现在为你在你的data文件目录中的cmcchr中找到有一个tempinnodb.frm的文件,比如说你以前的库中要恢复的也是一个叫tempinnodb.frm的文件,你只需要把tempinnodb.frm文件拷贝到cmcchr中覆盖,就可以恢复其表结构。


myisam表结构的恢复

mysql> USE tmp;
mysql> SHOW CREATE TABLE test;
ERROR 1017 (HY000): Can't find file: 'test' (errno: 2)

提示找不到文件,下面我们来处理错误,在tmp数据目录下建立 test.MYI 和 temp.MYD 文件,然后我们使用mysql自带
的修复表命令

1
mysql> repair TABLE test USE_FRM;
+------------------+--------+----------+----------+
| TABLE            | Op     | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| test.test_myisam | repair | STATUS   | OK       |
+------------------+--------+----------+----------+
1 row IN SET (0.00 sec)
 
mysql> SHOW CREATE TABLE test \G;
*************************** 1. row **********
       TABLE: test
CREATE TABLE: CREATE TABLE `test` (
  `dd` varchar(1) NOT NULL,
  `cc` varchar(1) NOT NULL
) ENGINE=myisam DEFAULT CHARSET=utf8
1 row IN SET (0.00 sec)
ERROR:
No query specified
mysql> INSERT INTO test (dd,cc) value(1,2);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM test;
+------+
| dd   | cc
+------+
|    1 |2
+------+
1 row IN SET (0.00 sec
阅读(5086) | 评论(0) | 转发(0) |
0

上一篇:rpm卸载

下一篇:MySQL主从高可用方案

给主人留下些什么吧!~~