因此,我在数据库中混合了myisam和innodb表。(这是一个相当大的db 30 db),我把数据库的文件夹从一个服务器复制到下一个/var/lib/mysql/databasename,好了,myisam表正在打开,列出了无害数据库表,但是当我单击左边选项卡(phpmyadmin)上的任何一个表时,我得到了这个错误:#1146 - Table 'databasename.users' doesn't exist,这将是针对users表的。其他无害的表也有同样的问题。我想知道如何补救这个问题。我以root身份直接通过ssh登录到mysql:SHOW TABLES;表用户和其他innodb表都列出了。当我做SHOW COLUMNS FROM users;时,我得到:
mysql> show columns from article;
ERROR 1146 (42S02): Table 'sitecontent.article' doesn't exist有什么想法吗?(问题只存在于innodb表中!)
发布于 2014-11-06 20:04:05
您无法复制包含InnoDB表的数据库文件夹,因为InnoDB存储引擎在InnoDB表的物理文件(frm和.ibd)和数据字典之间保持着共生关系。

数据字典位于称为ibdata1的系统表空间文件中。
您不能复制数据文件夹并期望它独立于ibdata1。
SHOW TABLES;之所以工作,是因为它只扫描.frm文件,不访问元数据。
你可以做两件事之一
FLUSH TABLES;,在复制到另一台服务器之前断开.ibd文件与ibdata1的连接。然后,将.ibd文件重新附加到目标服务器上。https://dba.stackexchange.com/questions/82093
复制相似问题