Hola a todos,
Es raro que pida ayuda, pero estoy desconcertado sobre cómo resolver esto.
Acabo de reconstruir mi sitio y obtengo esto:
discourse-data-explorer ya está en la versión compatible más reciente
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: el valor de clave duplicada viola la restricción de unicidad "data_explorer_queries_pkey"
2020-08-28 17:54:07.380 UTC [3060] discourse@discourse DETAIL: La clave (id)=(-7) ya existe.
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: Ha ocurrido un error, esta y todas las migraciones posteriores se cancelaron:
ERROR: el valor de clave duplicada viola la restricción de unicidad "data_explorer_queries_pkey"
La parte importante es ERROR: el valor de clave duplicada viola la restricción de unicidad "data_explorer_queries_pkey"
He encontrado la consulta con el id -7 en la consola de Rails, pero parece ser una de las consultas integradas.
[5] pry(main)> DataExplorer::Query.find(-7)
=> #<DataExplorer::Query:0x000055e44bbb4038
@created_by="-1",
@description="basado en la puntuación de la publicación calculada usando la cantidad de respuestas, me gusta, enlaces entrantes, marcadores, tiempo dedicado y número de lecturas.",
@group_ids=[],
@hidden=nil,
@id=-7,
@last_run_at="2020-01-03T18:06:31.966+00:00",
@name="Top 50 Usuarios de Calidad",
@sql=
"SELECT sum(p.score) / count(p) AS \"puntuación promedio por publicación\",\n count(p.id) AS cantidad_de_publicaciones,\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">
También he accedido al prompt de plsql, pero no estoy seguro: ¿debería eliminar una consulta integrada para permitir que se inserte una nueva?