mysqldump: Got error: 1146: Table 'myDatabase.table' 在使用 LOCK TABLES 时不存在

use*_*482 8 mysql phpmyadmin

我正在尝试转储我的数据库:

mysqldump myDatabase > myDatabase.sql
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

mysqldump: Got error: 1146: Table 'myDatabase.table' doesn't exist when using LOCK TABLES
Run Code Online (Sandbox Code Playgroud)

当我去mysql时:

 mysql -u admin -p
Run Code Online (Sandbox Code Playgroud)

我查询表:

show tables;
Run Code Online (Sandbox Code Playgroud)

我看到了桌子。但是当我查询该特定表时:

 select * from table;
Run Code Online (Sandbox Code Playgroud)

我犯了同样的错误:

ERROR 1146 (42S02): Table 'myDatabase.table' doesn't exist
Run Code Online (Sandbox Code Playgroud)

我试图修复:

mysqlcheck -u admin -p --auto-repair --check --all-databases
Run Code Online (Sandbox Code Playgroud)

但得到同样的错误:

Error    : Table 'myDatase.table' doesn't exist
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误或如何修复此错误?

我会非常感谢你的帮助

Koh*_*ese 12

对我来说,问题是通过转到/var/lib/mysql(或存储原始数据库文件的任何地方)并删除错误表示不存在的表的 .frm 文件来解决的。


小智 1

我最近在升级到 16.04 LTS 的 Ubuntu 服务器上遇到了类似的问题。在此过程中,MySQL 被 MariaDB 取代,显然旧数据库无法自动转换为兼容格式。安装程序将原始数据库从 移动/var/lib/mysql/var/lib/mysql-5.7

有趣的是,原始表结构出现在文件/var/lib/mysql/[database_name]中的新表结构下.frm。新的ibdata文件是12M,2个日志文件是48M,我从中得出结论,数据一定在那里,但后来我发现初始化一个完全空的数据库会产生类似的大小,所以这不具有指示性。

我在 VirtualBox 上安装了 16.04 LTS,在上面安装了 MySQL,然后复制mysql-5.7目录并将其重命名为mysql. 启动服务器并转储所有内容mysqldump。删除了/var/lib/mysql原始服务器上的 ,初始化了一个新服务器并mysql_install_db从 mysqldump 导入了 sql 文件。

注意:我不是最初进行系统升级的人,因此可能缺少一些细节,但症状与您的相似,所以也许这会有所帮助。