Initial commit of akmon project
This commit is contained in:
67
quick_fix_policies.sql
Normal file
67
quick_fix_policies.sql
Normal file
@@ -0,0 +1,67 @@
|
||||
-- =====================================================
|
||||
-- 快速修复策略冲突
|
||||
-- 解决 "policy already exists" 错误
|
||||
-- =====================================================
|
||||
|
||||
-- 清理 user_roles 表的所有可能策略
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
BEGIN
|
||||
-- 删除 user_roles 表的所有策略
|
||||
FOR r IN
|
||||
SELECT policyname
|
||||
FROM pg_policies
|
||||
WHERE schemaname = 'public'
|
||||
AND tablename = 'user_roles'
|
||||
LOOP
|
||||
EXECUTE format('DROP POLICY IF EXISTS %I ON public.user_roles', r.policyname);
|
||||
END LOOP;
|
||||
|
||||
RAISE NOTICE '✅ 已清理 user_roles 表的所有策略';
|
||||
END $$;
|
||||
|
||||
-- 清理所有消息相关表的策略(如果需要)
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
BEGIN
|
||||
-- 删除所有消息相关表的策略
|
||||
FOR r IN
|
||||
SELECT schemaname, tablename, policyname
|
||||
FROM pg_policies
|
||||
WHERE schemaname = 'public'
|
||||
AND tablename IN ('ak_messages', 'ak_message_recipients', 'ak_message_groups',
|
||||
'ak_message_group_members', 'ak_message_templates',
|
||||
'ak_user_message_preferences', 'ak_message_stats', 'ak_message_types')
|
||||
LOOP
|
||||
EXECUTE format('DROP POLICY IF EXISTS %I ON %I.%I',
|
||||
r.policyname, r.schemaname, r.tablename);
|
||||
END LOOP;
|
||||
|
||||
RAISE NOTICE '✅ 已清理所有消息相关表的策略';
|
||||
END $$;
|
||||
|
||||
-- 验证策略清理结果
|
||||
DO $$
|
||||
DECLARE
|
||||
policy_count INTEGER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO policy_count
|
||||
FROM pg_policies
|
||||
WHERE schemaname = 'public'
|
||||
AND tablename IN ('user_roles', 'ak_messages', 'ak_message_recipients', 'ak_message_groups',
|
||||
'ak_message_group_members', 'ak_message_templates',
|
||||
'ak_user_message_preferences', 'ak_message_stats', 'ak_message_types');
|
||||
|
||||
IF policy_count = 0 THEN
|
||||
RAISE NOTICE '🎉 策略清理完成: 所有冲突策略已删除';
|
||||
ELSE
|
||||
RAISE NOTICE '⚠️ 仍有 % 个策略存在,可能需要手动检查', policy_count;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 完成消息
|
||||
SELECT
|
||||
'✅ 策略冲突已解决' as status,
|
||||
'现在可以重新运行您的SQL脚本' as message;
|
||||
Reference in New Issue
Block a user