首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqldump:无法执行‘显示创建表’xxx.yy‘:在引擎中不存在表'yyy’(1932年)

mysqldump:无法执行‘显示创建表’xxx.yy‘:在引擎中不存在表'yyy’(1932年)
EN

Stack Overflow用户
提问于 2020-06-10 01:05:41
回答 2查看 3.6K关注 0票数 0

我不得不在Proxmox中重做我的服务器(Debian 9)。我更新了一个包(libc6),并打破了依赖关系(我没有快照它.)。受影响的守护进程之一是MySQL / MariaDB,我无法从PhpMyAdmin进行备份,因为守护进程无法工作,并且无法连接到数据库。

现在我已经安装了Debian 10,但是我在从另一台机器恢复数据库时遇到了问题。

代码语言:javascript
复制
mysqldump: Couldn't execute 'show create table `xxx.yyy`': Table 'yyy' doesn't exist in engine (1932)

当我尝试下列解决方案时,将提示以下错误:

代码语言:javascript
复制
root@debian:~# mysqldump -u root -p --all-databases > all_databases.sql
Enter password:
mysqldump: Got error: 1932: "Table 'mysql.gtid_slave_pos' doesn't exist in engine" when using LOCK TABLES
root@debian:~# mysqldump --skip-lock-tables -u root -p --all-databases > all_databases.sql
Enter password:
mysqldump: Couldn't execute 'show create table `gtid_slave_pos`': Table 'mysql.gtid_slave_pos' doesn't exist in engine (1932)

资料来源: https://support.plesk.com/hc/en-us/articles/213931725-Dump-of-the-MySQL-database-hosted-on-the-Plesk-server-fails-mysqldump-table-doesn-t-exist-when-using-LOCK-TABLES

代码语言:javascript
复制
root@debian:~# mysqlfrm --server=xxx:yyy@localhost:3306 test.frm --port=3310
WARNING: Using a password on the command line interface can be insecure.
# Source on localhost: ...
Usage: mysqlfrm --server=[user[:<pass>]@host[:<port>][:<socket>]|<login-path>[:<port>][:<socket>]] [path\tbl1.frm|db:tbl.frm]

mysqlfrm: error: Can't connect to MySQL server on 'localhost:3306' (111 Connection refused)

资料来源: https://dba.stackexchange.com/a/127813

代码语言:javascript
复制
MariaDB [(none)]> ALTER TABLE mysql.gtid_slave_pos DISCARD TABLESPACE;
ERROR 1932 (42S02): Table 'mysql.gtid_slave_pos' doesn't exist in engine

资料来源: Restore MySQL database using only .frm and .ibd files

还有别的选择吗?

编辑:

我会回答丹布莱克问我的一些问题。

  • 我是怎么进入这种状态的?

我不太清楚,但我想我在尝试几次重新启动mysqld/mariadb服务之后,破坏了MySQL,而我尝试了几个降低libc6等级的解决方案,或者试图让mariadb再次运行。

  • 在Debian 9中MySQL/MariaDB版本是什么?

mariadb Ver 15.1远端10.1.44-MariaDB,用于debian gnu (x86_64),使用读行5.2

  • Debian 10的版本是什么?

mariadb Ver 15.1远端10.3.22-MariaDB,用于debian gnu (x86_64),使用读行5.2

  • ,我把整个数据从一个复制到另一个吗?

不我没试过..。但我在堆叠溢出网站和谷歌上没有发现任何有用的东西。

mysql_upgrade?运行

  • 了吗?

不,我没有尝试过--也许通过更新Debian 9中的mariadb --可能是一个可能的解决方案。但是,回顾一下Debian 9的包,我没有找到Debian 9的MariaDB10.3版本(这是Debian 9需要的clib6 2.30-10版本,我使用的是2.14版本)。

你能接受服务器中其他数据库的mysqldump吗?而不是名为one的mysql )?

是的,我为一些数据库做了备份,但我无法备份所有数据库(仅从10个数据库备份3或4个数据库)。

EN

回答 2

Stack Overflow用户

发布于 2020-06-11 19:48:56

你至少有两个选择:

选项1:就地修复它。

在尝试修复anything.

  • Remove mariadb.

  • Install mariadb...which之前,
  1. 会创建服务器的快照和/或备份。
  2. 一旦运行,就应该修复阻止其启动的任何软件问题。
  3. 一旦工作,就使用mysqldump.

创建数据库备份。

选项2:创建一个新服务器。

version).

  • Stop (安装相同的操作系统和新的
  1. 服务MariaDB
  2. ,并将数据库文件从旧服务器复制到新服务器)。Ubuntu上的默认位置是/var/lib/mysql/
  3. Once --覆盖文件、启动mariadb服务并跳入mysql提示符以验证数据库是否出现。(例如,显示databases;)
  4. Once正在工作,使用mysqldump.

创建数据库的备份)

这就是我如何在服务器上安装MariaDB并安装自动备份:https://hammondslegacy.com/forum/viewtopic.php?f=40&t=266

票数 1
EN

Stack Overflow用户

发布于 2020-06-10 04:51:25

语法是

代码语言:javascript
复制
`dbname`.`tablename`

代码语言:javascript
复制
`dbname.tablename`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62294263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档