Upgrading from 5.2.1 to zammad 5.4

went to upgrade to the newest version of zammad tonight from 5.2.1 to 5.4.0
and it seems that i can no longer login to the system.

the API is tossing error 422 (Unprocessable Entity)

looking for some help to get this back up tonight.

app/controllers/application_controller/handles_transitions.rb:16:in `handle_transaction'
E, [2023-03-16T05:27:53.725826#9949-111300] ERROR -- : Error ID P7xXw4nY: PG::UndefinedTable: ERROR:  relation "public_links" does not exist
LINE 8:  WHERE a.attrelid = '"public_links"'::regclass
                            ^

I, [2023-03-16T05:27:53.726355#9949-111300]  INFO -- : Completed 422 Unprocessable Entity in 87ms (Views: 0.3ms | ActiveRecord: 8.8ms | Allocations: 34947)

I managed to get past this error by looking at the fresh install of zammad 5.4 I’m guessing the upgrade scripts didn’t run. i exported the schema for the things the API was complaining about from this fresh install of 5.4 to this upgraded 5.4 and got it so i can log in along with get to the tickets but there are still other things i suspect are not done as it is erroring on adjusting tickets.

I, [2023-03-16T06:14:10.499831#9949-111240]  INFO -- : Started POST "/api/v1/taskbar" for 10.0.4.5 at 2023-03-16 06:14:10 +0000
I, [2023-03-16T06:14:10.504682#9949-110720]  INFO -- : Started GET "/api/v1/tickets/2346?all=true&auto_assign=true&_=1678947240258" for 10.0.4.5 at 2023-03-16 06:14:10 +0000
I, [2023-03-16T06:14:10.510365#9949-111240]  INFO -- : Processing by TaskbarController#create as JSON
I, [2023-03-16T06:14:10.511342#9949-111240]  INFO -- :   Parameters: {"key"=>"Ticket-2346", "callback"=>"TicketZoom", "params"=>{"ticket_id"=>2346, "overview_id"=>2, "shown"=>true}, "prio"=>2, "notify"=>false, "active"=>true, "id"=>"c-0"}
I, [2023-03-16T06:14:10.513100#9949-110720]  INFO -- : Processing by TicketsController#show as JSON
I, [2023-03-16T06:14:10.516178#9949-110720]  INFO -- :   Parameters: {"all"=>"true", "auto_assign"=>"true", "_"=>"1678947240258", "id"=>"2346"}
E, [2023-03-16T06:14:10.528163#9949-111240] ERROR -- : undefined method `app' for #<Taskbar id: nil, user_id: 4, last_contact: nil, client_id: nil, key: "Ticket-2346", callback: "TicketZoom", state: {}, preferences: {}, params: {"ticket_id"=>2346, "overview_id"=>2, "shown"=>true}, prio: 2, notify: false, active: true, created_at: nil, updated_at: nil> (NoMethodError)



CREATE TABLE public.public_links (
    id integer NOT NULL,
    link character varying(500) NOT NULL,
    title character varying(200) NOT NULL,
    description character varying(200),
    screen character varying[] NOT NULL,
    new_tab boolean DEFAULT true NOT NULL,
    prio integer NOT NULL,
    updated_by_id integer NOT NULL,
    created_by_id integer NOT NULL,
    created_at timestamp(3) without time zone NOT NULL,
    updated_at timestamp(3) without time zone NOT NULL
);


ALTER TABLE public.public_links OWNER TO zammad;

--
-- Name: public_links_id_seq; Type: SEQUENCE; Schema: public; Owner: zammad
--

CREATE SEQUENCE public.public_links_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.public_links_id_seq OWNER TO zammad;

--
-- Name: public_links_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: zammad
--

ALTER SEQUENCE public.public_links_id_seq OWNED BY public.public_links.id;


--
-- Name: public_links id; Type: DEFAULT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.public_links ALTER COLUMN id SET DEFAULT nextval('public.public_links_id_seq'::regclass);


--
-- Name: public_links public_links_pkey; Type: CONSTRAINT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.public_links
    ADD CONSTRAINT public_links_pkey PRIMARY KEY (id);


--
-- Name: index_public_links_on_link; Type: INDEX; Schema: public; Owner: zammad
--

CREATE UNIQUE INDEX index_public_links_on_link ON public.public_links USING btree (link);


--
-- Name: public_links fk_rails_3033635a3a; Type: FK CONSTRAINT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.public_links
    ADD CONSTRAINT fk_rails_3033635a3a FOREIGN KEY (updated_by_id) REFERENCES public.users(id);


--
-- Name: public_links fk_rails_350fadd8cc; Type: FK CONSTRAINT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.public_links
    ADD CONSTRAINT fk_rails_350fadd8cc FOREIGN KEY (created_by_id) REFERENCES public.users(id);


CREATE TABLE public.user_overview_sortings (
    id integer NOT NULL,
    user_id integer NOT NULL,
    overview_id integer NOT NULL,
    prio integer NOT NULL,
    updated_by_id integer NOT NULL,
    created_by_id integer NOT NULL,
    created_at timestamp(3) without time zone NOT NULL,
    updated_at timestamp(3) without time zone NOT NULL
);


ALTER TABLE public.user_overview_sortings OWNER TO zammad;

--
-- Name: user_overview_sortings_id_seq; Type: SEQUENCE; Schema: public; Owner: zammad
--

CREATE SEQUENCE public.user_overview_sortings_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.user_overview_sortings_id_seq OWNER TO zammad;

--
-- Name: user_overview_sortings_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: zammad
--

ALTER SEQUENCE public.user_overview_sortings_id_seq OWNED BY public.user_overview_sortings.id;


--
-- Name: user_overview_sortings id; Type: DEFAULT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.user_overview_sortings ALTER COLUMN id SET DEFAULT nextval('public.user_overview_sortings_id_seq'::regclass);


--
-- Name: user_overview_sortings user_overview_sortings_pkey; Type: CONSTRAINT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.user_overview_sortings
    ADD CONSTRAINT user_overview_sortings_pkey PRIMARY KEY (id);


--
-- Name: index_user_overview_sortings_on_overview_id; Type: INDEX; Schema: public; Owner: zammad
--

CREATE INDEX index_user_overview_sortings_on_overview_id ON public.user_overview_sortings USING btree (overview_id);


--
-- Name: index_user_overview_sortings_on_user_id; Type: INDEX; Schema: public; Owner: zammad
--

CREATE INDEX index_user_overview_sortings_on_user_id ON public.user_overview_sortings USING btree (user_id);


--
-- Name: user_overview_sortings fk_rails_07211fbc85; Type: FK CONSTRAINT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.user_overview_sortings
    ADD CONSTRAINT fk_rails_07211fbc85 FOREIGN KEY (user_id) REFERENCES public.users(id);


--
-- Name: user_overview_sortings fk_rails_16d8008529; Type: FK CONSTRAINT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.user_overview_sortings
    ADD CONSTRAINT fk_rails_16d8008529 FOREIGN KEY (created_by_id) REFERENCES public.users(id);


--
-- Name: user_overview_sortings fk_rails_2eaee08c60; Type: FK CONSTRAINT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.user_overview_sortings
    ADD CONSTRAINT fk_rails_2eaee08c60 FOREIGN KEY (updated_by_id) REFERENCES public.users(id);


ALTER TABLE taskbars rename table taskbars1;


CREATE TABLE public.taskbars (
    id integer NOT NULL,
    user_id integer NOT NULL,
    last_contact timestamp(3) without time zone NOT NULL,
    key character varying(100) NOT NULL,
    callback character varying(100) NOT NULL,
    state text,
    preferences text,
    params character varying(2000),
    prio integer NOT NULL,
    notify boolean DEFAULT false NOT NULL,
    active boolean DEFAULT false NOT NULL,
    app character varying DEFAULT 'desktop'::character varying NOT NULL,
    created_at timestamp(3) without time zone NOT NULL,
    updated_at timestamp(3) without time zone NOT NULL
);


ALTER TABLE public.taskbars OWNER TO zammad;

--
-- Name: taskbars_id_seq; Type: SEQUENCE; Schema: public; Owner: zammad
--

CREATE SEQUENCE public.taskbars_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.taskbars_id_seq OWNER TO zammad;

--
-- Name: taskbars_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: zammad
--

ALTER SEQUENCE public.taskbars_id_seq OWNED BY public.taskbars.id;


--
-- Name: taskbars id; Type: DEFAULT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.taskbars ALTER COLUMN id SET DEFAULT nextval('public.taskbars_id_seq'::regclass);


--
-- Name: taskbars taskbars_pkey; Type: CONSTRAINT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.taskbars
    ADD CONSTRAINT taskbars_pkey PRIMARY KEY (id);


--
-- Name: index_taskbars_on_key; Type: INDEX; Schema: public; Owner: zammad
--

CREATE INDEX index_taskbars_on_key ON public.taskbars USING btree (key);


--
-- Name: index_taskbars_on_user_id; Type: INDEX; Schema: public; Owner: zammad
--

CREATE INDEX index_taskbars_on_user_id ON public.taskbars USING btree (user_id);


--
-- Name: taskbars fk_rails_f3c54fdb6d; Type: FK CONSTRAINT; Schema: public; Owner: zammad
--

ALTER TABLE ONLY public.taskbars
    ADD CONSTRAINT fk_rails_f3c54fdb6d FOREIGN KEY (user_id) REFERENCES public.users(id);



Hi @dw5304 ,

yeah this looks odd. There is also an issue (API Errors since last update · Issue #4522 · zammad/zammad · GitHub) for the missing app column. You could try to run zammad run rake db:migrate as a workaround. For some reason it looks like that the package migration did not run properly hm… We are investigating what could be the cause for this.

Thanks for your feedback :slight_smile:

@dw5304 did you have any errors while updating to 5.4?

i didnt see any issues, i do have the upgrade logs so looking though them now that i got a bit of sleep.

be aware i attempted to run the migrate db

zammad@azhelpdesk:~$ zammad run rake db:migrate
== 20220829100535 CreatePublicLinks: migrating ================================
-- create_table(:public_links)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::DuplicateTable: ERROR:  relation "public_links" already exists
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:49:in `exec'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:49:in `block (2 levels) in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:48:in `block in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract_adapter.rb:695:in `block in log'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract_adapter.rb:687:in `log'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:47:in `execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:322:in `create_table'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:929:in `block in method_missing'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:897:in `block in say_with_time'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:897:in `say_with_time'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:918:in `method_missing'
/opt/zammad/db/migrate/20220829100535_create_public_links.rb:19:in `add_table'
/opt/zammad/db/migrate/20220829100535_create_public_links.rb:8:in `change'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:867:in `exec_migration'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:851:in `block (2 levels) in migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:850:in `block in migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:849:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1037:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1329:in `block in execute_migration_in_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1380:in `block in ddl_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/transactions.rb:209:in `transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1380:in `ddl_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1328:in `execute_migration_in_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1302:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1302:in `migrate_without_lock'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1251:in `block in migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1401:in `block in with_advisory_lock'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1416:in `block in with_advisory_lock_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1416:in `with_advisory_lock_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1397:in `with_advisory_lock'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1251:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1086:in `up'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1061:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/tasks/database_tasks.rb:237:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/railties/databases.rake:92:in `block (3 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/railties/databases.rake:90:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/railties/databases.rake:90:in `block (2 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/zammad/bin/bundle:121:in `load'
/opt/zammad/bin/bundle:121:in `<main>'

Caused by:
ActiveRecord::StatementInvalid: PG::DuplicateTable: ERROR:  relation "public_links" already exists
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:49:in `exec'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:49:in `block (2 levels) in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:48:in `block in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract_adapter.rb:695:in `block in log'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract_adapter.rb:687:in `log'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:47:in `execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:322:in `create_table'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:929:in `block in method_missing'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:897:in `block in say_with_time'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:897:in `say_with_time'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:918:in `method_missing'
/opt/zammad/db/migrate/20220829100535_create_public_links.rb:19:in `add_table'
/opt/zammad/db/migrate/20220829100535_create_public_links.rb:8:in `change'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:867:in `exec_migration'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:851:in `block (2 levels) in migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:850:in `block in migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:849:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1037:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1329:in `block in execute_migration_in_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1380:in `block in ddl_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/transactions.rb:209:in `transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1380:in `ddl_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1328:in `execute_migration_in_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1302:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1302:in `migrate_without_lock'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1251:in `block in migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1401:in `block in with_advisory_lock'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1416:in `block in with_advisory_lock_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1416:in `with_advisory_lock_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1397:in `with_advisory_lock'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1251:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1086:in `up'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1061:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/tasks/database_tasks.rb:237:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/railties/databases.rake:92:in `block (3 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/railties/databases.rake:90:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/railties/databases.rake:90:in `block (2 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/zammad/bin/bundle:121:in `load'
/opt/zammad/bin/bundle:121:in `<main>'

Caused by:
PG::DuplicateTable: ERROR:  relation "public_links" already exists
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:49:in `exec'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:49:in `block (2 levels) in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:48:in `block in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract_adapter.rb:695:in `block in log'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract_adapter.rb:687:in `log'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:47:in `execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:322:in `create_table'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:929:in `block in method_missing'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:897:in `block in say_with_time'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:897:in `say_with_time'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:918:in `method_missing'
/opt/zammad/db/migrate/20220829100535_create_public_links.rb:19:in `add_table'
/opt/zammad/db/migrate/20220829100535_create_public_links.rb:8:in `change'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:867:in `exec_migration'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:851:in `block (2 levels) in migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:850:in `block in migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:849:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1037:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1329:in `block in execute_migration_in_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1380:in `block in ddl_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/transactions.rb:209:in `transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1380:in `ddl_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1328:in `execute_migration_in_transaction'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1302:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1302:in `migrate_without_lock'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1251:in `block in migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1401:in `block in with_advisory_lock'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1416:in `block in with_advisory_lock_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1416:in `with_advisory_lock_connection'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1397:in `with_advisory_lock'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1251:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1086:in `up'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/migration.rb:1061:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/tasks/database_tasks.rb:237:in `migrate'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/railties/databases.rake:92:in `block (3 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/railties/databases.rake:90:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/railties/databases.rake:90:in `block (2 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/zammad/bin/bundle:121:in `load'
/opt/zammad/bin/bundle:121:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

ok found the error

database.yml found. Updating db…

rake aborted!
ActiveRecord::ConnectionNotEstablished: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”?

Hi @dw5304 ,

public links are a 5.3 feature, so if upgraded from 5.2, you should not have this table at the point of the migration. I guess you are not a customer of us and did not use a backport branch before or something. If so, you could try to drop the table and run the migrations again:

$ zammad run rails r "ActiveRecord::Migration.drop_table :public_links"
$ zammad run rake db:migrate

Afterwards, post the output here again. Then we hopefully find out where the migration failed in the first place.

Please understand that I added this table in per the second post :slight_smile:
I’m guessing ill need to drop public.user_overview_sortings_id_seq along with the public.taskbars ?
As i added both of these settings per the new instance to get access to the dashboard.

Also be aware i do have a backup so if we need to look at things before we can.

OK I checked your second post again. I think the manual fixing via SQL was not a good idea. Because each migration which will do these actions in the right way will crash and block the correct way of how migrations run. If you have a backup of the time before you migrated to 5.4, I would recommend you to start from there and share the error messages of the update here.

I did rename the old table to a new one so i reverted that back see snapshop below and run the update and it updated.
I think the db side of the house is happy now. we still have the undefined app error in zammad though.

`zammad@azhelpdesk:~$ zammad run rake db:migrate
== 20230120163410 TaskbarsAddAppsSupport: migrating ===========================
– change_table(:taskbars)
→ 0.0549s
== 20230120163410 TaskbarsAddAppsSupport: migrated (0.0568s) ==================

== 20230125114758 Issue4437AddCleanup: migrating ==============================
== 20230125114758 Issue4437AddCleanup: migrated (0.0106s) =====================

== 20230129220648 TaskbarUpdatePreferenceTasks: migrating =====================
== 20230129220648 TaskbarUpdatePreferenceTasks: migrated (2.7939s) ============

== 20230130173733 AddTaskbarCleanupJob: migrating =============================
== 20230130173733 AddTaskbarCleanupJob: migrated (0.0143s) ====================

== 20230207152500 TicketArticleNoteHint: migrating ============================
== 20230207152500 TicketArticleNoteHint: migrated (0.0248s) ===================

== 20230209083829 HtmlSanitizerProcessingTimeout: migrating ===================
== 20230209083829 HtmlSanitizerProcessingTimeout: migrated (0.0204s) ==========

== 20230224160814 Issue4505InconsistentScreenViewActiveAttribute: migrating ===
== 20230224160814 Issue4505InconsistentScreenViewActiveAttribute: migrated (0.0282s)
`

In the browser?

maybe zammad run rake assets:precompile

?

yes in the browser.
image

running zammad run rake assets:precompile now

Hmm seems like you are missing a migration again:

Can you run zammad run rake db:migrate, does it not output anything?

it did not output anything.

Does the migration exist?

ls -al db/migrate/20230120163410_taskbars_add_apps_support.rb

it does,

root@azhelpdesk:/opt# locate 20230120163410_taskbars_add_apps_support.rb
/opt/zammad/db/migrate/20230120163410_taskbars_add_apps_support.rb

root@azhelpdesk:/home/azuser# zammad run rake assets:precompile
yarn install v1.22.17
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
[4/5] Linking dependencies...
warning "@graphql-codegen/cli > cosmiconfig-typescript-loader@4.3.0" has unmet peer dependency "@types/node@*".
warning " > ts-node@10.9.1" has unmet peer dependency "@types/node@*".
warning "@graphql-codegen/cli > @graphql-tools/code-file-loader > @graphql-tools/graphql-tag-pluck > @babel/plugin-syntax-import-assertions@7.20.0" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > @testing-library/user-event@14.4.3" has unmet peer dependency "@testing-library/dom@>=7.21.4".
warning " > @testing-library/vue@6.6.1" has unmet peer dependency "@vue/compiler-sfc@>= 3".
warning " > @vue/test-utils@2.2.10" has unmet peer dependency "@vue/compiler-dom@^3.0.1".
warning " > vite-plugin-pwa@0.14.1" has unmet peer dependency "workbox-build@^6.5.4".
[5/5] Building fresh packages...
warning Your current version of Yarn is out of date. The latest version is "1.22.19", while you're on "1.22.17".
info To upgrade, run the following command:
$ curl --compressed -o- -L https://yarnpkg.com/install.sh | bash
$ node script/fix-node-modules.mjs
Done in 189.86s.
W, [2023-03-16T13:24:51.073982#9955-6100]  WARN -- : Removed sourceMappingURL comment for missing asset 'app/lib/base/clipboard-polyfill.promise.js.map' from /opt/zammad/app/assets/javascripts/app/lib/base/clipboard-polyfill.promise.js
autoprefixer: /opt/zammad/app/assets/stylesheets/zammad.scss:13527:3: end value has mixed support, consider using flex-end instead

I sent you a PM, if you want to talk.

It would be interesting if the migrations afterwards were executed, you could check if the following command outputs something:

zammad run rails r "pp Scheduler.find_by(method: 'DataPrivacyTask.cleanup')"

This job e.g. is created after the migration with the app stuff.

@dw5304 and me checked out the problem together and it seems that all migrations run properly but because he did a apt-get update he also updated other packages and it did upgrade the postgres at the same time and this broke the upgrade process on the restart of the zammad app.

We only needed to restart the app. root> systemctl restart zammad

2 Likes

I will find a solution for upgraded database servers together with Zammad in the future. It bugs me some time now. Zammad should throw an hard error and simply not continue. I’ll find a solution for that.

6 Likes

in a turn of events seems that some how my public link table went away on its own today? lol…

back to

E, [2023-03-17T00:21:48.727573#19178-178220] ERROR -- : PG::UndefinedTable: ERROR:  relation "public_links" does not exist
LINE 8:  WHERE a.attrelid = '"public_links"'::regclass
                            ^
 (ActiveRecord::StatementInvalid)
app/models/public_link.rb:16:in `block in <class:PublicLink>'
app/controllers/sessions_controller.rb:21:in `rescue in show'
--
E, [2023-03-17T00:21:48.729568#19178-178220] ERROR -- : Error ID DLNHQxoF: PG::UndefinedTable: ERROR:  relation "public_links" does not exist
LINE 8:  WHERE a.attrelid = '"public_links"'::regclass

 public | overviews                                  | table | zammad
 public | overviews_groups                           | table | zammad
 public | overviews_roles                            | table | zammad
 public | overviews_users                            | table | zammad
 public | package_migrations                         | table | zammad
 public | packages                                   | table | zammad
 public | permissions                                | table | zammad
 public | permissions_roles                          | table | zammad
 public | postmaster_filters                         | table | zammad
 public | recent_views                               | table | zammad
 public | report_profiles                            | table | zammad
 public | roles                                      | table | zammad
 public | roles_groups                               | table | zammad
 public | roles_users                                | table | zammad
 public | schedulers                                 | table | zammad
 public | schema_migrations                          | table | zammad
 public | sessions                                   | table | zammad
 public | settings                                   | table | zammad
 public | signatures                                 | table | zammad
 public | slas                                       | table | zammad
 public | smime_certificates                         | table | zammad