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