Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



MySql数据库文件frm的移植 (ERROR 1146 (42S02): Table 'xxx.xxxx' doesn't exist)解决方案

       今天在实际开发中对于MySQL数据库进行移植发生的问题来说下. 开始把本地data中的数据库文件拷贝到另一台机子上Test, 执行show tables ; 可以看到数据库表,但是对表进行任何操作都报错: 表不存在 , 原以为Mysql的数据库文件(.frm)Copy->stick到本地安装MySQLDB目录的data文件夹下就可以.事实不是我们想的那样. 对于MySQL数据库的移植,我们能看到的只是它生成的表结构 以就是说以 .frm为后缀名的文件.


    实际上, .frm .myd .myi都是Mysql存储数据的文件, 代表MySQL数据库表的结构/数据和索引文件 ,我们默认创建数据库和表时只生成数据库表结构的文件.frm. 移植数据库时,必须存在三种格式的数据库表文件,才能正常使用该DB, 当我们在本地创建出数据库还有该数据库域下的表时, 在data文件夹下只存在数据库的字符集描述文件和数据库表结构文件,若需要移植数据库, 应该在 该数据库域下, 已就是说 use targetDatabase; 后执行以下语句生成其他两种格式的数据存储文件,


alter table targetTableName ENGINE = MYISAM ROW_FORMAT = COMPACT;


对每个表都执行以上语句后, 在看看data文件下的数据库表,其他两种格式都生成出来了.然后在移植, 就不会存在文章开始说的数据库表不存在的错误.

浏览2900  评论0  Alex于 2013-4-11 19:36
发言