我确实更改了MySQL安装的datadir,并按照某些步骤运行良好。我曾经动过的每个基地都正确地移动了,但是一个。我可以连接和使用数据库,即使SHOW TABLES也会正确返回所有表,并且每个表的文件都存在于mysql数据目录中。但是,当我尝试在此处选择内容时,它说该表不存在。但是表确实存在,它甚至显示在SHOW TABLES语句中!我的猜测是,SHOW TABLES会以某种方式列出文件的存在,文件已损坏或类似的东西,但它不会对其进行检查。因此,我可以列出它们,但不能访问它们。但这只是一个猜测,我以前从未见过。现在无法重新启动数据库进行测试,使用该数据库的所有其他应用程序都可以正常运行。有谁知道这是什么吗?例:mysql> SHOW TABLES;+-----------------------+| Tables_in_database |+-----------------------+| TABLE_ONE || TABLE_TWO || TABLE_THREE |+-----------------------+mysql> SELECT * FROM TABLE_ONE;ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist
3 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
以防万一有人还在乎:
使用命令直接复制数据库目录后,我遇到了同样的问题
cp -r /path/to/my/database /var/lib/mysql/new_database
如果您对使用InnoDB表的数据库执行此操作,则会遇到上述疯狂的“表不存在”错误。
问题是,你需要ib*在MySQL的datadir根目录的文件(例如ibdata1,ib_logfile0和ib_logfile1)。
当我复制这些内容时,它对我有用。
添加回答
举报
0/150
提交
取消