Ciao a tutti,
Raramente chiedo aiuto, ma sono perplesso su come risolvere questo problema.
Ho appena ricostruito il mio sito e sto ricevendo questo messaggio:
discourse-data-explorer è già alla versione più recente compatibile
I, [2020-08-28T17:53:57.578920 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
2020-08-28 17:54:07.380 UTC [3060] discourse@discourse ERROR: valore di chiave duplicato viola il vincolo univoco "data_explorer_queries_pkey"
2020-08-28 17:54:07.380 UTC [3060] discourse@discourse DETAIL: Chiave (id)=(-7) esiste già.
2020-08-28 17:54:07.380 UTC [3060] discourse@discourse STATEMENT: INSERT INTO data_explorer_queries(id, name, description, sql, user_id, last_run_at, hidden, created_at, updated_at)
SELECT
(replace(key, 'q:',''))::integer,
value::json->>'name',
value::json->>'description',
value::json->>'sql',
CASE WHEN (value::json->'created_by')::text = 'null' THEN
null
WHEN (value::json->'created_by')::text = '""' THEN
null
WHEN (value::jsonb ? 'created_by') THEN
(value::json->>'created_by')::integer
ELSE
null
END,
CASE WHEN (value::json->'last_run_at')::text = 'null' THEN
null
WHEN (value::json->'last_run_at')::text = '""' THEN
null
ELSE
(value::json->'last_run_at')::text::timestamptz
END,
CASE WHEN (value::json->'hidden')::text = 'null' THEN
false
WHEN (value::jsonb ? 'hidden') THEN
(value::json->'hidden')::text::boolean
ELSE
false
END,
'2020-08-28 17:54:07.368132',
'2020-08-28 17:54:07.368132'
FROM plugin_store_rows
WHERE plugin_name = 'discourse-data-explorer' AND type_name = 'JSON' AND (replace(key, 'q:',''))::integer < 0
rake aborted!
StandardError: Si è verificato un errore, questa e tutte le successive migrazioni sono state annullate:
ERROR: valore di chiave duplicato viola il vincolo univoco "data_explorer_queries_pkey"
La parte importante è ERROR: valore di chiave duplicato viola il vincolo univoco "data_explorer_queries_pkey"
Ho trovato la query con l’id -7 nella console di Rails, ma sembra essere una delle query integrate.
[5] pry(main)> DataExplorer::Query.find(-7)
=> #<DataExplorer::Query:0x000055e44bbb4038
@created_by="-1",
@description="basato sul punteggio dei post calcolato in base al numero di risposte, like, link in entrata, segnalibri, tempo trascorso e conteggio delle letture.",
@group_ids=[],
@hidden=nil,
@id=-7,
@last_run_at="2020-01-03T18:06:31.966+00:00",
@name="Top 50 Utenti di Qualità",
@sql=
"SELECT sum(p.score) / count(p) AS \"punteggio medio per post\",\n count(p.id) AS post_count,\n p.user_id\nFROM posts p\nJOIN users u ON u.id = p.user_id\nWHERE p.created_at >= CURRENT_DATE - INTERVAL '6 month'\nAND NOT u.admin\nAND u.active\nGROUP BY user_id,\n u.views\nHAVING count(p.id) > 50\nORDER BY sum(p.score) / count(p) DESC\nLIMIT 50">
Sono anche entrato nel prompt plsql, ma non sono sicuro: dovrei rimuovere una query integrata per permettere l’inserimento di una nuova?"