相关疑难解决方法(0)

在许多视图上修改 DEFINER

我在更新后备份我的数据库时遇到问题。我一直在我的系统上四处寻找,试图找出原因。我运行的一个查询返回了这个结果。

Got error: 1449: The user specified as a definer ('cittool'@'%') does not exist when using LOCK TABLES
Run Code Online (Sandbox Code Playgroud)

经过一些调查,这些视图的定义者似乎是一个已从系统中清除的旧开发者帐户。有这个问题的数据库和视图很少使用,并且大多数被保留用于存档目的。

大约有 40 个视图带有不再存在的定义器。有没有一种简单的方法可以一次性将定义者更改为不同的帐户?有没有办法让 mysqldump 简单地将所有视图转储到一个文件中,以便我可以编辑该文件并重新创建视图?

mysql view

29
推荐指数
2
解决办法
6万
查看次数

Mysqldump 将某些表视为视图

在执行 mysqldump 时,会跳过一些表,因为 mysqldump 将它们视为视图而不是表,尽管它们是 100% 的表。

所以对于某些表,它看起来像

-- Retrieving table structure for table services...
-- Sending SELECT query...
-- Retrieving rows...
Run Code Online (Sandbox Code Playgroud)

对于一些:

-- Retrieving view structure for table users...
-- It's base table, skipped
Run Code Online (Sandbox Code Playgroud)

我看到这个问题已经提到过几次了,但是没有解决方案。

显示创建表用户;

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
...
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8915 DEFAULT CHARSET=utf8 
Run Code Online (Sandbox Code Playgroud)

SHOW TABLE STATUS LIKE 'users' \G;

*************************** 1. row ***************************
           Name: users
         Engine: InnoDB
        Version: 10 …
Run Code Online (Sandbox Code Playgroud)

mysql mysqldump backup

7
推荐指数
1
解决办法
2792
查看次数

标签 统计

mysql ×2

backup ×1

mysqldump ×1

view ×1