我有一个如下所示的审核查询,用于审核 MySQL 中用户的表级权限:
SELECT -- the list of privileges for tables
mt.host `host`,
mt.user `user`,
CONCAT(mt.Db, '.', mt.Table_name) `Tables`,
REPLACE(mt.Table_priv, ',', ', ') AS `Privileges`
FROM
mysql.tables_priv mt
WHERE
mt.Table_name IN
(SELECT
DISTINCT
t.table_name `tables`
FROM
information_schema.tables AS t
WHERE
t.table_type IN
('BASE TABLE', 'SYSTEM VIEW', 'TEMPORARY', '') OR
t.table_type <> 'VIEW' AND
t.create_options IS NOT NULL
)
在我从 MySQL 5.5 升级到 MySQL 5.6 之前,查询一直运行良好。现在不行了。 MySQL 5.6 中在文本列上使用子 SELECT 是否存在某种问题?
最佳答案
看起来这可能是你的问题: https://bugs.mysql.com/bug.php?id=77191 使用底部的解决方法,我能够让它工作。
set optimizer_switch='semijoin=off';
关于MySQL 5.6 中文本列的 mysql 子选择不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33558809/