Hi Atick, it seems is solved the Problem, but for shure it would be nice if you can chek it. Yes you can take a backup. What i had done, i changed some tables in postscript.
-- ================================================
-- FIX TYPE MISMATCH: client_id / home → smallint
-- Für Joomla (Helix Ultimate / PageBuilder)
-- Schema: public
-- Tabellen: ndgfa_menu, ndgfa_template_styles
-- ================================================
DO $$
BEGIN
-- TEMPLATE_STYLES: client_id
IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema='public' AND table_name='ndgfa_template_styles'
AND column_name='client_id' AND data_type <> 'smallint'
) THEN
EXECUTE $q$
ALTER TABLE public.ndgfa_template_styles
ALTER COLUMN client_id DROP DEFAULT,
ALTER COLUMN client_id TYPE smallint
USING CASE
WHEN client_id ~ '^[0-9]+$' THEN client_id::int
WHEN client_id IN ('t','true','TRUE') THEN 1
WHEN client_id IN ('f','false','FALSE') THEN 0
ELSE 0
END,
ALTER COLUMN client_id SET DEFAULT 0
$q$;
END IF;
-- TEMPLATE_STYLES: home
IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema='public' AND table_name='ndgfa_template_styles'
AND column_name='home' AND data_type <> 'smallint'
) THEN
EXECUTE $q$
ALTER TABLE public.ndgfa_template_styles
ALTER COLUMN home DROP DEFAULT,
ALTER COLUMN home TYPE smallint
USING CASE
WHEN home ~ '^[0-9]+$' THEN home::int
WHEN home IN ('t','true','TRUE') THEN 1
WHEN home IN ('f','false','FALSE') THEN 0
ELSE 0
END,
ALTER COLUMN home SET DEFAULT 0
$q$;
END IF;
-- MENU: client_id
IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema='public' AND table_name='ndgfa_menu'
AND column_name='client_id' AND data_type <> 'smallint'
) THEN
EXECUTE $q$
ALTER TABLE public.ndgfa_menu
ALTER COLUMN client_id DROP DEFAULT,
ALTER COLUMN client_id TYPE smallint
USING CASE
WHEN client_id ~ '^[0-9]+$' THEN client_id::int
WHEN client_id IN ('t','true','TRUE') THEN 1
WHEN client_id IN ('f','false','FALSE') THEN 0
ELSE 0
END,
ALTER COLUMN client_id SET DEFAULT 0
$q$;
END IF;
-- MENU: home
IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema='public' AND table_name='ndgfa_menu'
AND column_name='home' AND data_type <> 'smallint'
) THEN
EXECUTE $q$
ALTER TABLE public.ndgfa_menu
ALTER COLUMN home DROP DEFAULT,
ALTER COLUMN home TYPE smallint
USING CASE
WHEN home ~ '^[0-9]+$' THEN home::int
WHEN home IN ('t','true','TRUE') THEN 1
WHEN home IN ('f','false','FALSE') THEN 0
ELSE 0
END,
ALTER COLUMN home SET DEFAULT 0
$q$;
END IF;
END$$;