MYSQL下的幽灵表`````怎么能把它找出来`~~

问题描述

MYSQL下有个库`是直接从别的机器下复制文件过来的`在命令行MYSQL里可以show tables到全部表;但是有些表select时说不存在.从GUI里进去就看不到这些不存在的表``这是怎么回事``我的权限是ROOT``把原库中的ibdata1复制过来MYSQL可以启动`但没有什么作用```还是提示不存在``要是把``ib_logfile1``和ib_logfile0也复制过来```MYSQL就启动不起来``这两个机器上的ibdata1是一样大的`10M``ib_logfile一个是5M多`一个是10M多```试验过`5.0.51`4.1.22`4.1.7`三个版本的MYSQL都不行``在这三版的err文件里都有`Cannot find table XXXX/classdb from the internal data dictionaryof InnoDB though the .frm file for the table exists. Maybe youhave deleted and recreated InnoDB data files but have forgottento delete the corresponding .frm files of InnoDB tables, or youhave moved .frm files to another database?See http://dev.mysql.com/doc/refman/5.0/en/innodb-troubleshooting.htmlhow you can resolve the problem.我去上面说的页面看了看也没发现什么有用的信息`` mysql> show variables like '%innodb%';+---------------------------------+------------------------+¦ Variable_name ¦ Value ¦+---------------------------------+------------------------+¦ have_innodb ¦ YES ¦¦ innodb_additional_mem_pool_size ¦ 3552256 ¦¦ innodb_autoextend_increment ¦ 8 ¦¦ innodb_buffer_pool_awe_mem_mb ¦ 0 ¦¦ innodb_buffer_pool_size ¦ 173015040 ¦¦ innodb_data_file_path ¦ ibdata1:10M:autoextend ¦¦ innodb_data_home_dir ¦ ¦¦ innodb_fast_shutdown ¦ ON ¦¦ innodb_file_io_threads ¦ 4 ¦¦ innodb_file_per_table ¦ OFF ¦¦ innodb_flush_log_at_trx_commit ¦ 1 ¦¦ innodb_flush_method ¦ ¦¦ innodb_force_recovery ¦ 0 ¦¦ innodb_lock_wait_timeout ¦ 50 ¦¦ innodb_locks_unsafe_for_binlog ¦ OFF ¦¦ innodb_log_arch_dir ¦ ¦¦ innodb_log_archive ¦ OFF ¦¦ innodb_log_buffer_size ¦ 2097152 ¦¦ innodb_log_file_size ¦ 87031808 ¦¦ innodb_log_files_in_group ¦ 2 ¦¦ innodb_log_group_home_dir ¦ . ¦¦ innodb_max_dirty_pages_pct ¦ 90 ¦¦ innodb_max_purge_lag ¦ 0 ¦¦ innodb_mirrored_log_groups ¦ 1 ¦¦ innodb_open_files ¦ 300 ¦¦ innodb_table_locks ¦ ON ¦¦ innodb_thread_concurrency ¦ 8 ¦+---------------------------------+------------------------+27 rows in set (0.00 sec) 问题补充:执行SHOW ENGINE INNODB STATUS and the InnoDB Monitors 后报错```再说明一下`这个库是在一个崩掉的硬盘里救出来的``问题补充:.frm .isd .ism .myd .myi文件都在`问题补充:变着花的复制办法我差不多都试了````都不行```这个库以前的MYSQL版本可能是4.0.13``这是刚在原服务器里找到的```我一会装这版再试试``问题补充:白搞一半天`就是版本问题```在4.0.13下一点事没有```

解决方案

我这儿试验了下,我把整个data目录全部过去就可以启动了,2边数据库都是mysql-noinstall-5.1.24-rc-win32的,你看看行不行?
解决方案二:
准确说我拷贝了data目录下的ib_logfile0,ib_logfile1,ibdata1和数据库文件夹
解决方案三:
我这里是可以查表中的数据了
解决方案四:
innodb, myisam 等各种表的信息存在不同的地方
解决方案五:
报错信息已经很明显了,你只是复制了数据库文件但没有复制数据库结构。如果你的数据库是test,那么在mysql的data目录下就有一个test目录,里面有对应的表的.frm文件,也就是库结构文件。所以,一般都很小。ibdata1、ib_logfile1和ib_logfile0才是用来存储数据的。
解决方案六:
发了个mysql复制相关的文件给你,不知道能不能帮到你
解决方案七:
这个嘛, 直接拷过来可能还要更新数字字典什么的导入导出数据库推荐还是用命令吧,如果不想用命令,推荐Sun的一个很好用的GUI工具MySQL GUI Toolshttp://dev.mysql.com/downloads/gui-tools/5.0.html
解决方案八:
用工具把它导出,然后执行该脚本,就可以了
解决方案九:
执行这个以后是什么结果:SHOW ENGINE INNODB STATUS and the InnoDB Monitors

时间: 2024-10-26 08:15:38

MYSQL下的幽灵表`````怎么能把它找出来`~~的相关文章

MySQL中文参考手册5(安装MySQL下)

mysql|参考|参考手册|中文 MySQL中文参考手册5(安装MySQL下)转载 译者:晏子 [返回][转发] 译者:晏子 (clyan@sohu.com)主页:http://linuxdb.yeah.net 4.12 Win32 注意事项这节描述在Win32上安装和使用MySQL,这也在MySQL Win32分发所带的"readme"文件中描述.  4.12.1 在Win32上安装MySQL如果你没有一个注册的MySQL版本,你应该首先下载共享软件版本,从:  MySQL 3.21

mysql用命令向表中添加数据刷新不显示

问题描述 mysql用命令向表中添加数据刷新不显示 mysql用命令向表中添加数据刷新不显示,每次都要关闭mysql后再打开就能看到添加进去的数据,不想这么麻烦,求大神相助,有没有好办法不关闭mysql只刷新就可以看到数据 解决方案 你应该是把Mysql的自动提交给关了吧!重新打开就行了 show variables like "autocommit"; 看value 是否为ON 不为ON的话 set autocommit=1; 这样应该就可以看到数据了 解决方案二: 直接命令行模式下

mysql触发器 动态创建表

问题描述 mysql触发器 动态创建表 我有一张公司表 company,还有一些表是需要动态生成的,生成规则则是需要根据company的id 所以我现在想要写一个触发器,就是当company表中插入一条记录之后就动态创建表. 触发器的语法我大致看了下,可现在的难点是表名如何写. 想过可能要声明一个变量用来存表名,但是如何在触发器中引用这变量 create trigger tableCreateTrigger after insert on sys_company for each row beg

mysql关于两张表查询的问题

问题描述 mysql关于两张表查询的问题 我现在有两张表 iislog ips_global 想根据iislog表查询出来的IP地址,得出对应的归属地,请问这语句该怎么写啊? 解决方案 如果没有关联,可以这么写 select g.ip_location, g.ip_isp from ips_global g left join iislog l on l.id=1 where g.ip_start<=l.client_ip and g.ip_end >= l.client_ip id是主键,可

mysql 数据导出修改表结构后,再导入,新添加的字段插入默认值

问题描述 mysql 数据导出修改表结构后,再导入,新添加的字段插入默认值 要实现的例子: 表A (a0,a1) 拥有数据100条 现在要将表结构修改为,A(a0,a1,a2),但是不想重新输入数据 所以,想先从旧的表中到处数据,然后导入新表,字段a2取默认值或固定值 求解决方案!! 解决方案 在各位大神的提示下,经过测试,alter table A add a2 数据类型 default 值 可以更改表结构 因此呢,我打算先把原表更改结构,导出数据,然后再将原表恢复原样 这样很安全了,不会影响

Mysql数据库提示数据表损失问题修复解决办法

最近一段时间,公司的服务器每隔一段时间(大概24个小时),就会出现无法访问的情况,然后重启了服务器,一切都恢复了正常,一直都不知道是什么问题,于是就问了机房的工程师,他帮我分析了服务器的运行日志,发现了大量的Mysql的错误.     基本上每隔20秒,就会出现一次错误提示,看着这个的提示应该是这个表需要修复了 错误产生原因 在网上查了查为什么会出现表损坏,基本上得到以下的原因: 频繁查询和更新Mysql数据库表,造成的索引错误. MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性

很全面的Mysql数据库、数据库表、数据基础操作笔记(含代码)_Mysql

 Mysql数据库.数据库表.数据基础操作笔记分享给大家,供大家参考,具体内容如下 一.数据库操作 1.创建数据库 Create database db name[数据库选项]; tip:语句要求使用语句结束符";"来结束服务. 标识符(数据库名)命名规则: 大小写取决于当前操作系统. 见名知意,推荐使用下划线法. 标识符的字符: 使用任意字符,数字,甚至中文.但是一些特殊的组合,例如纯数字组合,特殊符号等需使用标识符限定符来包裹. 限定符:反引号`` 中文可以:但要求客户端编码 在m

MySQL常用命令 MySQL处理数据库和表的命令_Mysql

学习如何管理和导航MySQL数据库和表是要掌握的首要任务之一,下面的内容将主要对MySQL的数据库和表的一些常用命令进行总结,一些我们不得不掌握的命令,一些信手拈来的命令. 一.处理数据库 1.查看数据库 获取服务器上的数据库列表通常很有用.执行show databases;命令就可以搞定. mysql> show databases; 2.创建数据库 mysql> create database db_test; Query OK, 1 row affected (0.00 sec) 3.使

mysql导出导入中文表解决方法_Mysql

在开发过程中会经常用到mysql导出导入中文表,本文将详细介绍其如何使用,需要的朋友可以参考下一.先针对utf8导出: (1)导出源数据库的所有表: 复制代码 代码如下: mysqldump -u root -p密码 --socket=mysql.sock --default-character-set=utf8 --set-charset=utf8 --hex-blob --databases 数据库名 > utf8.sql (2)修改sql文件,删除文件头中包含的创建数据库的命令 (3)登录