Proyecto

General

Perfil

Errores #4029

Error en vista SQL de presupuesto

Añadido por Santiago Ramos hace casi 4 años. Actualizado hace casi 4 años.

Estado:
Resuelta
Prioridad:
Normal
Asignado a:
Categoría:
Desarrollo
Versión prevista:
Fecha de inicio:
2020-06-02
Fecha fin:
% Realizado:

100%


Descripción

Al obtener la información de presupuesto de un proyecto, el sistema devuelve error:

ActionView::Template::Error (Mysql2::Error: View 'gesproei_pruebas.v_presupuesto' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them: SHOW FULL FIELDS FROM `v_presupuesto`):
    1:     <!-- Cofinanciacion publica y privada -->
    2:     <% cofinanciador_publico = Agente.where(:sistema => true, :publico => true) %>
    3:     <% cofinanciador_privado = Agente.where(:sistema => true, :publico => false) %>
    4:     <% cofinanciador_publico_total = VPresupuesto.sum_total(proyecto: @proyecto.id, agente: cofinanciador_publico, agente_rol: "financiador") %>
    5:     <% if @proyecto.convenio? %>
    6:       <!-- Para convenios, recorremos todos los pacs para calcular la suma de lo cofinanciado en todos ellos -->
    7:       <% cofinanciado_publico_valor = 0 %>
  app/models/v_presupuesto.rb:44:in `block in <class:VPresupuesto>'
  app/views/info/_contexto_proyecto.html.erb:4:in `_app_views_info__contexto_proyecto_html_erb___4208118200238511471_70264800574420'
  app/views/info/_proyecto_detalle_cajas.html.erb:3:in `_app_views_info__proyecto_detalle_cajas_html_erb___2622940814492725212_70264803167900'
  app/views/info/proyecto.html.erb:6:in `_app_views_info_proyecto_html_erb__4509398014714540645_70264809551240'
  app/controllers/info_controller.rb:56:in `index'

Esto puede tener que ver con el ultimo commit en vistas?:

https://git.semillasl.com/gong/gor/-/commit/7ffe35d34b5bbee1a64a0c98401305de84ae0fea

PD: Aunque sospecho que no tiene que ver, se ha hecho una cambio que creo que no es correcto:

- DROP TABLE IF EXISTS v_presupuesto;
+ DROP VIEW IF EXISTS v_presupuesto;

La intención del "drop table" tal y como lo describen los comentarios es la de "Por si la vista hubiera sido importada como tabla, la eliminamos primero" y es por que en ocasiones un dump de BBDD exporta estas vistas como tablas resultando imposible crearlas luego de nuevo como vistas.

Histórico

#1 Actualizado por Jaime Ortiz hace casi 4 años

Las vistas han tenido dos cambios:

1 ) El ultimo el que comentas. Introduje lo de

DROP VIEW

Para poder tener un rake db:drop_views. Esto no es imprescindible pero viene bien para cuando se modifica algo del modelo que afecta a las views y antes de correr los migrates ejecutas el (rake drop:views) para que no se quejen de que las views se han quedado mal. Que conste que habría otras opciones de solución.

En cualquier caso, se puede mantener también el tema del:

DROP TABLE

Para el caso que estas comentando de que se importen en vez de como views como tables.

2 ) Aparte de esto las views las modifique con un cambio que tampoco es necesario:

https://git.semillasl.com/gong/gor/-/commit/3dbe3a1fa0f13a6832c4377a785ac67924610f67#de3150c01c3a946a6168173c4116741379fe3579

Esto es por las traducción de las partidas. Hago que por defecto el campo que pillen las vistas para el nombre de las partidas sea "nombre_es". Esto aparte de no riguroso (no siempre tiene que ser el idioma por defecto español) en realidad no se utiliza por que los resúmenes no pillan el nombre de la partida de la propia view.

¿Puede estar dando problemas este segundo cambio?

¿Has ejecutado un rake db:views ?

Tanto 1) como 2) se pueden revertir y hacer de otra forma.

#2 Actualizado por Santiago Ramos hace casi 4 años

mmm... esto se esta complicando... he probado a hacer otro db:migrate por si me faltara algo y ahora me salta otro error:

mysqldump: Couldn't execute 'SHOW FIELDS FROM `v_gasto`': View 'gesproei_produccion.v_gasto' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them (1356)
rake aborted!
failed to execute:
mysqldumpPlease check the output above for any errors and make sure that `mysqldump` is installed in your PATH and has proper permissions.

#3 Actualizado por Santiago Ramos hace casi 4 años

Ah... a la pregunta anterior: si, la instancia donde ha saltado el error esta dockerizada y siempre pasa la siguiente secuencia al arrancar:

  rake db:migrate
  rake db:seed
  rake db:views

#4 Actualizado por Jaime Ortiz hace casi 4 años

Santiago Ramos escribió:

mmm... esto se esta complicando... he probado a hacer otro db:migrate por si me faltara algo y ahora me salta otro error:

[...]

Hola!

Este es el motivo de ejecutar antes el:

rake db:drop_views

Es decir, como cambiamos algo del modelo que afecta a las vistas salta el mensaje que te ha saltado.

> mysqldump: Couldn't execute 'SHOW FIELDS FROM `v_gasto`': View 'gesproei_produccion.v_gasto' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them (1356)
> rake aborted!
> failed to execute:
> mysqldumpPlease check the output above for any errors and make sure that `mysqldump` is installed in your PATH and has proper permissions.

Posiblemente sea mejor opción ponerlo en el migrate a mano (hacer drop de todas las vistas), por que si te enteras ya cuando te ha saltado el mensaje.

Osea para que todo fuese bien sería:

rake db:drop_views
rake db:migrate
rake db:views

Pero vamos aunque el orden no sea el correcto y aunque no ejecutes el rake db:drop_views el tema te debería funcionar correctamente.

Te pido disculpas por el jaleo, por que realmente sería mejor haber metido el borrado de las vistas en el migrate y listo.

Gracias!

#5 Actualizado por Santiago Ramos hace casi 4 años

  • Estado cambiado Nueva por Resuelta
  • % Realizado cambiado 0 por 100

Ok, aclarado.

Pues entonces dejo mi entrypoint asi:

if [ "${RUN_MIGRATIONS:-false}" == "true" ]
then
  rake db:drop_views
  rake db:migrate
  rake db:seed
  rake db:views
  rake oei_erp_db:migrate
  rake oei_erp_db:seed
  rake oei_cuadro_mando_db:migrate
  rake oei_cuadro_mando_db:seed
fi

Exportar a: Atom PDF

Financiado por:

Desarrollado por:
Software libre forjado en: