点击分区管理,出现错误网页提示:User Permission verification error: SQLSTATE[42703]: Undefined column: 7 ERROR: column p.inhrelid does not exist LINE 11: COUNT(DISTINCT p.inhrelid) AS total_... ^ HINT: Perhaps you meant to reference the column "i.inhrelid".
确定不兼容有错页面为 /src/Database/Partition/PartitionRegistry.php
找到这段代码
128行
// 通过检测直接子表的 partstrat 判断是否有子分区
$sql = "SELECT
c.relname AS TABLE_NAME,
'RANGE' AS PARTITION_METHOD,
CASE WHEN EXISTS (
SELECT 1 FROM pg_inherits i_sub
JOIN pg_partitioned_table pt_sub
ON pt_sub.partrelid = i_sub.inhrelid
WHERE i_sub.inhparent = c.oid
AND pt_sub.partstrat = 'h'
) THEN 'HASH' ELSE NULL END AS SUBPARTITION_METHOD,
COUNT(DISTINCT p.inhrelid) AS total_par,
COUNT(DISTINCT l.inhrelid) AS total_sub
FROM pg_class c
JOIN pg_partitioned_table pt ON pt.partrelid = c.oid
LEFT JOIN pg_inherits i ON i.inhparent = c.oid
LEFT JOIN pg_class p ON p.oid = i.inhrelid
AND p.relispartition = true
LEFT JOIN pg_inherits i2 ON i2.inhparent = p.oid
LEFT JOIN pg_class l ON l.oid = i2.inhrelid
WHERE c.relname LIKE '"
. str_replace("'", "''", $prefixEscaped) . "%'
AND c.relispartition = false
AND pt.partstrat = 'r'
GROUP BY c.relname, pt.partstrat";替换为
// 通过检测直接子表的 partstrat 判断是否有子分区 $sql = "SELECT c.relname AS TABLE_NAME, 'RANGE' AS PARTITION_METHOD, CASE WHEN EXISTS ( SELECT 1 FROM pg_inherits i_sub JOIN pg_partitioned_table pt_sub ON pt_sub.partrelid = i_sub.inhrelid WHERE i_sub.inhparent = c.oid AND pt_sub.partstrat = 'h' ) THEN 'HASH' ELSE NULL END AS SUBPARTITION_METHOD, COALESCE(( SELECT COUNT(DISTINCT i.inhrelid) FROM pg_inherits i WHERE i.inhparent = c.oid ), 0) AS total_par, COALESCE(( SELECT COUNT(DISTINCT i2.inhrelid) FROM pg_inherits i2 JOIN pg_class p_sub ON p_sub.oid = i2.inhrelid WHERE i2.inhparent IN ( SELECT i.inhrelid FROM pg_inherits i WHERE i.inhparent = c.oid ) AND p_sub.relispartition = true ), 0) AS total_sub FROM pg_class c JOIN pg_partitioned_table pt ON pt.partrelid = c.oid WHERE c.relname LIKE '" . str_replace("'", "''", $prefixEscaped) . "%' AND c.relispartition = false AND pt.partstrat = 'r' GROUP BY c.relname, c.oid, pt.partstrat";
保存,后台清楚缓存,重启PHP,前台刷新,OK。
