子查询MYSQL以从服务器中选择所有数据库

子查询MYSQL以从服务器中选择所有数据库,mysql,view,inner-join,mariadb,Mysql,View,Inner Join,Mariadb,在提问之前,我已经检查了这个主题,我发现它在某一点上是有帮助的,但现在还不够 我在一个MariaDB服务器中有很多数据库,其中一个注册的视图被破坏,给我带来了“无效引用”错误 考虑到此错误阻止我运行备份例程,并且MariaDB日志仅显示“数据库(Get error:1049)(Locktable)”,我需要找出哪个视图被破坏 现在我有了一个视图列表,有没有办法在不同的数据库中“选择*”所有视图 我试过这样的方法: select * from TABLE_SCHEMA where (select

在提问之前,我已经检查了这个主题,我发现它在某一点上是有帮助的,但现在还不够

我在一个MariaDB服务器中有很多数据库,其中一个注册的视图被破坏,给我带来了“无效引用”错误

考虑到此错误阻止我运行备份例程,并且MariaDB日志仅显示“数据库(Get error:1049)(Locktable)”,我需要找出哪个视图被破坏

现在我有了一个视图列表,有没有办法在不同的数据库中“选择*”所有视图

我试过这样的方法:

select *  from TABLE_SCHEMA where (select TABLE_SCHEMA,TABLE_NAME from information_schema.tables where TABLE_TYPE like 'VIEW');
但我知道它不会工作,因为我没有提供一个特定的数据库

我认为内部连接可以解决这个问题,但我不知道如何实现它

顺便说一句,如果有更好的方法来找出哪些视图有缺陷,我将不胜感激


提前谢谢你

由于唯一的答案被它的贡献者删除了,我开发了一个丑陋但有效的解决方法:

  • 我使用下面提供的查询创建了一个包含数据库和视图名称的文件:
  • mysql-p***-e“选择表模式,从信息模式中选择表名称。`TABLES`WHERE TABLE`类型类似于'VIEW'”>views.txt

  • 这会将包含在视图中运行基本选择所需信息的流保存到文件“views.txt”,因此我执行了以下操作:
  • 而IFS=read-r行;mysql-p***-e“select*from$(echo$line | awk'{print$1}')。$(echo$line | awk'{print$2}')限制1“2>>errors.txt;echo$line>>errors.txt;完成

    我知道这很难看,但它会在“views.txt”中列出的每个database.table或database.view中运行“select*”,只返回此查询的第一行

    它为我的服务器提供了一个有效的测试,它向我展示了哪些视图被破坏:

    第1行出现错误1146(42S02):表“.”不存在

    如果你面临类似的问题,我希望你能找到更好的方法来解决这个问题