问题描述
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