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

MYSQL下有个库是直接从别的机器下复制文件过来的

在命令行MYSQL里可以show tables到全部表;

但是有些表select时说不存在.

从GUI里进去就看不到这些不存在的表``

这是怎么回事``

我的权限是ROOT``

把原库中的ibdata1复制过来MYSQL可以启动但没有什么作用还是提示不存在

要是把ib_logfile1和ib_logfile0也复制过来`MYSQL就启动不起来

这两个机器上的ibdata1是一样大的10M`

ib_logfile一个是5M多一个是10M多``

试验过5.0.514.1.224.1.7三个版本的MYSQL都不行``

在这三版的err文件里都有`

Cannot find table XXXX/classdb from the internal data dictionary
of InnoDB though the .frm file for the table exists. Maybe you
have deleted and recreated InnoDB data files but have forgotten
to delete the corresponding .frm files of InnoDB tables, or you
have moved .frm files to another database?
See http://dev.mysql.com/doc/refman/5.0/en/innodb-troubleshooting.html
how 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)

[b]问题补充:[/b]
执行SHOW ENGINE INNODB STATUS and the InnoDB Monitors 后报错```

再说明一下这个库是在一个崩掉的硬盘里救出来的`

[b]问题补充:[/b]
.frm .isd .ism .myd .myi文件都在
[b]问题补充:[/b]
变着花的复制办法我差不多都试了
都不行

这个库以前的MYSQL版本可能是4.0.13这是刚在原服务器里找到的`

我一会装这版再试试
[b]问题补充:[/b]
白搞一半天`就是版本问题
在4.0.13下一点事没有``

我这儿试验了下,我把整个data目录全部过去就可以启动了,2边数据库都是mysql-noinstall-5.1.24-rc-win32的,你看看行不行?

执行这个以后是什么结果:
[code="java"]SHOW ENGINE INNODB STATUS and the InnoDB Monitors[/code]

用工具把它导出,然后执行该脚本,就可以了

这个嘛, :( 直接拷过来可能还要更新数字字典什么的
导入导出数据库推荐还是用命令吧,如果不想用命令,推荐Sun的一个很好用的GUI工具

MySQL GUI Tools

[url]http://dev.mysql.com/downloads/gui-tools/5.0.html[/url]

发了个mysql复制相关的文件给你,不知道能不能帮到你

报错信息已经很明显了,你只是复制了数据库文件但没有复制数据库结构。

如果你的数据库是test,那么在mysql的data目录下就有一个test目录,里面有对应的表的.frm文件,也就是库结构文件。所以,一般都很小。

ibdata1、ib_logfile1和ib_logfile0才是用来存储数据的。

innodb, myisam 等各种表的信息存在不同的地方

我这里是可以查表中的数据了

准确说我拷贝了data目录下的ib_logfile0,ib_logfile1,ibdata1和数据库文件夹