dumpling导出视图的疑问

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

通过dumpling导出全库的时候,指定–no-views=false会导出了视图view_t_test_db_list,但是为什么会产生testdb.view_t_test_db_list-schema.sql 这个文件,这个文件有什么作用,虽然在testdb.view_t_test_db_list-schema-view.sql中删除了前面那个文件创建的view_t_test_db_list表,但是万一我就有一张表是叫这个名字呢,那会不会导入的时候就有问题(后面我也会验证下),就是没明白testdb.view_t_test_db_list-schema.sql 这个文件存在的必要性?
$ cat testdb.view_t_test_db_list-schema.sql
CREATE TABLE view_t_test_db_list(
name int
)ENGINE=MyISAM;

$ cat testdb.view_t_test_db_list-schema-view.sql
DROP TABLE IF EXISTS view_t_test_db_list;
DROP VIEW IF EXISTS view_t_test_db_list;
CREATE ALGORITHM=UNDEFINED DEFINER=root@% SQL SECURITY DEFINER VIEW view_t_test_db_list (name) AS SELECT name AS name FROM testdb.t_test_db_list;

因为视图间可能存在引用关系,所以对视图的建立顺序有一定要求,但是这个引用关系没有被备份下来,所以先把所有视图同名表建立,再依次替换为视图,这样就能绕过视图的建立顺序要求.

如果你存在这个同名表,你视图创建也有问题的,本身不合理。

1 个赞